Saya ingin menjadwalkan restart Ubuntu saya setiap 30 menit. Apakah ada perintah atau cara grafis untuk melakukannya?
Saya ingin menjadwalkan restart Ubuntu saya setiap 30 menit. Apakah ada perintah atau cara grafis untuk melakukannya?
Jawaban:
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.
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 reboot
perintah, saya sarankan menjadwalkan shutdown
perintah 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.
-r
) lima menit setelah ( +5
) perintah berjalan. Ini berjalan setiap pada setiap tanda setengah jam ( */30
). Lihat man cron
dan man 5 crontab
.+5
ke hal lain untuk mengubah berapa lama pengguna setelah diperingatkan tentang reboot.0,30
di bawah menit juga akan berfungsi, jika Anda lebih suka itu. (Demikian pula, jika setiap 20 menit, Anda bisa menulis */20
atau 0,20,40
.)/sbin
ada dalam PATH
variabel 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.
sudo shutdown -c
.shutdown
tetapi akan berlaku sama jika Anda menjadwalkan reboot
.) Dalam hal ini, harap edit pertanyaan Anda untuk menjelaskan kebutuhan spesifik Anda. (Saya akan merekomendasikan anacron
ini, tetapi interval waktu Anda terlalu pendek.)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 noautoreboot
ada 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, jalankanshutdown -r +5
.
Jawaban ini menjelaskan bagaimana hubungan arus pendek dan dan atau operator dapat if
- then
logika. Untuk penjelasan singkat, intuitif, dan sangat informal, Anda dapat membaca perintah ini dengan cara:
/etc/noautoreboot
ada! Atau, jalankanshutdown -r +5
.
Lihat man [
untuk melihat bagaimana tes itu sendiri dilakukan.
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.
Instal gnome-schedule
dari Pusat Perangkat Lunak Ubuntu. Jika Anda tidak ingin menginstal sesuatu yang tambahan, lakukan dengan Terminal Way.
Buka gnome-schedule
dari tanda hubung, buat tugas berulang baru, dan tetapkan opsi ini:
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Biarkan opsi lain pada nilai standarnya. Klik Tambah .
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
.
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.
Jalankan sudo crontab -e
dari baris perintah dan tambahkan baris ini ke file:
0,30 * * * * reboot
Ini memberitahu sistem untuk menjalankan perintah reboot
setiap 30 menit sebagai root. Untuk ikhtisar sintaks waktu, lihat di sini: http://linuxmoz.com/crontab-syntax-tutorial/
reboot
harus dijalankan root
, dan ini menambahkannya ke crontab pribadi pengguna, jadi ini berjalan sebagai pengguna non-root. (Hal yang sama dengan sudo reboot
juga tidak akan berfungsi karena sudo
akan mencoba untuk meminta kata sandi dan gagal.) /etc/crontab
Seharusnya digunakan untuk ini (harap dicatat sintaksnya sedikit berbeda).
sudo crontab -e
dan kemudian membuat entri cron.
Gunakan cron
untuk 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.
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.