Bagaimana cara memulai kembali setiap 30 menit secara otomatis?

14

Saya ingin menjadwalkan restart Ubuntu saya setiap 30 menit. Apakah ada perintah atau cara grafis untuk melakukannya?

pengguna123498
sumber
12
Saya hanya ingin tahu: apa tujuan memulai kembali setiap 30 menit?
Rafał Cieślak

Jawaban:

30

Cara terbaik untuk melakukan ini tergantung pada mengapa Anda ingin Ubuntu memulai kembali setiap setengah jam.

Jadi saya sarankan untuk mengedit pertanyaan Anda untuk menjelaskan mengapa Anda ingin melakukan ini.

Reboot setiap 30 menit, dan beri peringatan kepada pengguna sebelum setiap reboot:

Dengan asumsi orang mungkin menggunakan mesin, baik secara lokal maupun jarak jauh, yang terbaik adalah menghindari memulai kembali Ubuntu dari bawah mereka tanpa peringatan apa pun. Oleh karena itu, daripada menjadwalkan rebootperintah, saya sarankan menjadwalkan shutdownperintah sehingga memperingatkan pengguna.

Untuk menjadwalkan penghentian setiap setengah jam dengan peringatan 5 menit sebelumnya, tambahkan ini ke /etc/crontab:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5

Anda sebenarnya tidak perlu menambahkan baris pertama, yang merupakan komentar. Saya sudah memasukkannya untuk kejelasan - sesuatu seperti itu sudah ada di sana.

  • Ini akan menjadwalkan sistem untuk turun untuk reboot ( -r) lima menit setelah ( +5) perintah berjalan. Ini berjalan setiap pada setiap tanda setengah jam ( */30). Lihat man crondan man 5 crontab.
  • Ubah +5ke hal lain untuk mengubah berapa lama pengguna setelah diperingatkan tentang reboot.
  • 0,30di bawah menit juga akan berfungsi, jika Anda lebih suka itu. (Demikian pula, jika setiap 20 menit, Anda bisa menulis */20atau 0,20,40.)
  • Pastikan /sbinada dalam PATHvariabel yang ditentukan di dekat bagian atas /etc/crontab. Kalau tidak, shutdown(under command) harus dipanggil sebagai /sbin/shutdown.

Perintah akan selalu berjalan pada tanda setengah jam, jika mesin hidup dan berjalan pada saat itu . Ini akan menyebabkan shutdown diumumkan setiap setengah jam dan dilakukan pada 5 menit dan 35 menit melewati jam.

  • Satu manfaat di sini adalah bahwa administrator dapat membatalkan shutdown yang baru saja diumumkan sudo shutdown -c.
  • Jika komputer mati selama waktu-waktu tertentu ketika perintah yang dijadwalkan dijalankan, itu tidak akan berjalan. Jika itu tidak cukup untuk kebutuhan Anda, Anda harus menjadwalkan reboot Anda secara berbeda. (Ini tidak spesifik untuk penggunaan shutdowntetapi akan berlaku sama jika Anda menjadwalkan reboot.) Dalam hal ini, harap edit pertanyaan Anda untuk menjelaskan kebutuhan spesifik Anda. (Saya akan merekomendasikan anacronini, tetapi interval waktu Anda terlalu pendek.)

Mempermudah administrator untuk mencegah reboot otomatis terjadi sama sekali:

Anda mungkin ingin mengatur ini agar mudah bagi administrator untuk menangguhkan semua reboot yang dijadwalkan secara otomatis:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    [ -e /etc/noautoreboot ] || shutdown -r +5

Jadwal ini reboot dengan cara yang sama - setiap setengah jam, dengan peringatan lima menit - kecuali bahwa itu tidak akan menjadwalkan reboot jika file yang dipanggil noautorebootada di /etc.

  • File kontrol ini dapat dibuat oleh administrator dengan:

    sudo touch /etc/noautoreboot
    
  • Itu dapat dihapus dengan:

    sudo rm /etc/noautoreboot
    
  • Perhatikan bahwa apakah file itu ada , bukan apa yang dikandungnya, yang penting.

  • Jika reboot dijadwalkan dan pengguna diperingatkan, maka file dibuat, reboot (akan segera datang) masih akan terjadi.

  • Bagaimana cara kerjanya? Ini menggunakan hubungan pendek- dievaluasi atau operator ( ||) sebagai singkatan untuk:

    Jika /etc/noautoreboot tidak ada, jalankan shutdown -r +5.

    Jawaban ini menjelaskan bagaimana hubungan arus pendek dan dan atau operator dapat if- thenlogika. Untuk penjelasan singkat, intuitif, dan sangat informal, Anda dapat membaca perintah ini dengan cara:

    /etc/noautorebootada! Atau, jalankan shutdown -r +5.

    Lihat man [untuk melihat bagaimana tes itu sendiri dilakukan.

Eliah Kagan
sumber
12

Saya suka melakukan ini dengan memberi tahu Session Manager kami ingin reboot. Ini dapat dilakukan tanpa izin root, dan kami mendapatkan jendela bagus yang memperingatkan kita bahwa sistem akan di-reboot-bahkan kita dapat membatalkan reboot jika kita mau.

Cara Grafis - Metode yang Dipilih

Instal gnome-scheduledari Pusat Perangkat Lunak Ubuntu. Jika Anda tidak ingin menginstal sesuatu yang tambahan, lakukan dengan Terminal Way.

Buka gnome-scheduledari tanda hubung, buat tugas berulang baru, dan tetapkan opsi ini:

  • Deskripsi: Apa pun yang Anda inginkan
  • Perintah: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Pilih Aplikasi X tepat di bawah perintah.
  • Waktu dan Tanggal, Tingkat Lanjut:
    • Menit: 0,30

Biarkan opsi lain pada nilai standarnya. Klik Tambah .


Cara Terminal - Tidak Perlu untuk Perangkat Lunak Tambahan

Jalankan dari terminal:

crontab -e

Tambahkan baris ini:

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot

Simpan & keluar. Dengan asumsi Anda menggunakan nano(yang default), tekan Ctrl + o dan Ctrl + x .

Harap perhatikan bahwa ini tidak akan berfungsi jika DISPLAY Anda sebenarnya berbeda dengan :0, dan itulah alasan metode ini tidak disukai. Tapi, jujur, jika Anda me-reboot komputer Anda setiap 30 menit, DISPLAY Anda kemungkinan besar akan selalu demikian :0.

Tidak menggunakan Gnome atau Unity?

Kedua metode yang dijelaskan di atas tergantung pada beberapa komponen gnome, ditemukan pada sesi Gnome dan pada Unity. Jika Anda ingin melakukan ini di lingkungan lain (seperti KDE Kubuntu, LXDE Kubuntu ...) Anda sebaiknya mengganti perintah dengan yang ini sebagai gantinya:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Ini tidak akan meminta konfirmasi, dan akan memulai kembali secara tidak langsung, tetapi akan bekerja pada semua lingkungan, dengan asumsi Anda belum meng-uninstall ConsoleKit secara manual, tentu saja.

Jorge Suárez de Lis
sumber
6

Jalankan sudo crontab -edari baris perintah dan tambahkan baris ini ke file:

0,30 * * * * reboot

Ini memberitahu sistem untuk menjalankan perintah rebootsetiap 30 menit sebagai root. Untuk ikhtisar sintaks waktu, lihat di sini: http://linuxmoz.com/crontab-syntax-tutorial/

Kevin Chen
sumber
3
Ini tidak akan berfungsi, seperti yang rebootharus dijalankan root, dan ini menambahkannya ke crontab pribadi pengguna, jadi ini berjalan sebagai pengguna non-root. (Hal yang sama dengan sudo rebootjuga tidak akan berfungsi karena sudoakan mencoba untuk meminta kata sandi dan gagal.) /etc/crontabSeharusnya digunakan untuk ini (harap dicatat sintaksnya sedikit berbeda).
Eliah Kagan
1
Anda bisa mengeluarkan sudo crontab -edan kemudian membuat entri cron.
Tass
-3

Gunakan cronuntuk menjadwalkan pekerjaan setiap 30 menit. Arahkan pekerjaan itu pada skrip shell yang sederhana

reboot

di dalamnya.

Sejak cron dijalankan sebagai root, Anda tidak perlu melakukan sesuatu yang istimewa dalam hal izin.

Memperbarui

Ya saya lakukan, pada kenyataannya saya tidak pernah pada sistem saya mengizinkan crontab berbasis pengguna (Ada cara yang lebih baik untuk memungkinkan pengguna untuk melakukan tugas yang dijadwalkan tingkat pengguna) cron dirancang dari awal murni untuk otomatisasi sistem dan bukan bagi pengguna untuk menjadwalkan biasa tugas. Hal-hal seperti rotasi log (yang masih terjadi sampai sekarang)

Reboot HARUS dijalankan sebagai root untuk bekerja dengan benar, alternatifnya adalah mengatur itu sedikit lengket, sehingga ketika dijalankan sebagai pengguna biasa itu benar-benar dijalankan sebagai root dan bekerja seperti yang diharapkan, tetapi dalam melakukan itu Anda kemudian membuka server Anda hingga memungkinkan biasa pengguna untuk reboot itu sesuka hati.

Anda bahkan mungkin dapat mengotomatiskan panggilan ke SUDO, tetapi saya perlu menggali yang itu, tidak yakin apakah Anda dapat mengotomatiskan kebutuhan untuk kata sandi dengan SUDO (Saya tidak sering menggunakannya, saya lebih suka langsung langsung ke root shell menggunakan SU)

Jika Anda mengaturnya di sistem lebar crontab maka semuanya dijalankan sebagai root, jadi pernyataan saya akurat (saya hanya lupa menyebutkan bahwa sistem yang lebar harus digunakan)

Adapun pertanyaan Anda, "Mengapa Membungkusnya dengan Skrip?" yah, kenapa tidak? Jika OP memasukkannya ke dalam skrip shell, maka di beberapa titik di masa mendatang perlu menambahkannya, ia hanya menambahkan skrip, alih-alih harus membuka crontab mencari pekerjaan, menghapusnya, menggantinya dengan skrip shell, lalu tulis skrip dengan + lama baru.

Lebih dari 20 tahun sebagai Sys Admin / Developer bekerja dengan sistem sejauh Ultrix / Solaris dan bahkan VAX telah mengajarkan saya satu poin utama.

Jika Anda dapat membuatnya lebih mudah di awal, maka tetap mudah untuk seumur hidup.

Saya benar-benar tidak mendapatkan sikap "Minimalis" ini yang dimiliki oleh banyak admin modern, di mana melakukan sesedikit mungkin adalah kunci keberhasilan. Sebagian besar server hari ini dengan mudah 20 kali + lebih kuat dari apa pun yang pernah saya mulai, dan skenario seperti ini (Membungkus skrip shell) disarankan untuk digunakan, jadi benar-benar tidak ada argumen untuk tidak melakukannya sekarang.

Kecuali Anda benar-benar ingin menjalankan Unix / Linux, yang mana menandai semuanya ke entri cron, dan menyatukan semuanya dengan cara yang harus dilakukan :-)

Namun, saya ngelantur, dan juga mengerti bahwa banyak pria akhir-akhir ini dilemparkan ke dalam dan disuruh membuat semuanya berfungsi, karena itu mereka kekurangan waktu (dan biasanya kecenderungan) untuk duduk dan belajar tentang teknik baru (atau tua dalam kasus ini) atau bahkan ingin bermain dengan hal-hal ini di luar pekerjaan.

Saya pribadi, memiliki satu server di antara yang saya jalankan yang didedikasikan murni untuk saya mainkan, jadi saya dapat menguji hal-hal seperti ini ... yang lebih baik A atau B, jadi bukan tanpa alasan saya menyarankan pada salah satu ini.

shawty
sumber
Lihat pembaruan saya .. Anda dapat memberikan saya 1 poin kembali sekarang jika Anda mau ;-)
shawty
Coba lagi ... bersabarlah ...
shawty
2
Ini sekarang bukan lagi jawaban sama sekali! (Juga, Anda membingungkan bit lengket dan bit setuid .)
Eliah Kagan
Ya itu adalah jawaban, saya mengetiknya, menambahkannya sebagai jawaban karena itu jawabannya !!!
shawty