Bagaimana saya bisa menjadwalkan reboot malam?

81

Saya mengalami beberapa masalah berkala menjalankan aplikasi tertentu, XBMC. Jika saya menggunakan XBMC secara teratur, sepertinya saya tidak memiliki masalah, tetapi jika saya membiarkannya tanpa pengawasan selama lebih dari 12 jam, saya harus reboot untuk membuatnya berfungsi kembali.

Saya tahu reboot yang terjadwal BUKAN jawabannya tetapi sampai saya dapat menemukan masalah, saya harus menjadwalkan reboot setiap pagi sehingga istri saya dapat menggunakannya jika saya pergi dan tidak dibuang ke luar jendela :)

Ada yang mengambil?

Braiam
sumber

Jawaban:

133

Saya akan menggunakan cron (harus sudah diinstal):

Edit crontab:

sudo crontab -e

Pertama kali Anda mungkin harus memilih editor yang Anda sukai (seperti nano)

Sisipkan baris seperti

0 4   *   *   *    /sbin/shutdown -r +5

di dasar. Penjelasan:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

jadi intinya

  0 4   *   *   *    /sbin/shutdown -r +5

akan mem-boot ulang sistem Anda setiap hari pada pukul 4:05 pagi. (4:00 pagi + 5 menit)

Ctrl+ X, Y, EnterHarus mendapatkan Anda keluar dari crontab (jika menggunakan nano)

Catatan: Anda mungkin harus menjalankannya crontab -esebagai root, karena shutdown membutuhkan root. crontab -emembuka file di / tmp daripada crontab yang sebenarnya sehingga dapat memeriksa kesalahan pada crontab baru Anda. Jika tidak ada kesalahan, maka crontab Anda yang sebenarnya akan diperbarui.

sBlatt
sumber
1
Terimakasih atas infonya. Satu-satunya hal yang harus saya lakukan adalah mengubah perintah ke / sbin / shutdown agar berfungsi untuk saya.
1
ini tidak berhasil untuk saya. menggunakan keduanya crontab -edan sudo crontab -emenyimpan file ke lokasi sementara ketika Anda pergi untuk keluar (mis. /tmp/crontab.Y88XQl/crontab) dan tugas tidak berjalan. saya terpaksa mengedit / etc / crontab secara langsung
wal
@wal "crontab -e membuka file di / tmp alih-alih crontab yang sebenarnya sehingga dapat memeriksa kesalahan crontab baru Anda dan mencegah Anda menimpa crontab Anda yang sebenarnya dengan kesalahan-kesalahan itu. Jika tidak ada kesalahan, maka crontab Anda yang sebenarnya akan diperbarui. " unix.stackexchange.com/questions/197504/…
Christh
14

Menambahkan ini ke /etc/cron.daily/zz-rebootharus berfungsi:

#!/bin/sh
shutdown -r now

Dan sudo chmod a+x /etc/cron.daily/zz-reboot. Awalan "zz" akan memaksanya untuk menjalankan terakhir dari semua skrip lain di direktori itu. Periksa /etc/crontabuntuk melihat jam berapa hari yang akan terjadi:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

Jika itu tidak berhasil, maka entri cron "reguler" juga dapat berfungsi, via sudo crontab -e

MINUTE HOUR * * * shutdown -r now

Dan akhirnya, jika Anda hanya ingin melakukan reboot sekali saja, Anda dapat menggunakan at:

echo "shutdown -r now" | sudo at 04:30
Kees Cook
sumber
Sejauh yang saya tahu ini akan mem-boot ulang sistem Anda saat Anda membuat file ini setiap hari, tolong perbaiki saya jika saya salah
sBlatt
1
Tidak cukup: itu akan reboot sekali per hari pada waktu apa pun cron.daily berjalan, yang agak tidak terduga. Jika Anda belum anacronmenginstal, ini adalah 06:25 waktu setempat, yang mungkin ok (atau mungkin buruk jika Anda bangun pagi). Jika Anda melakukannya, yang saya pikir adalah default, bisa jadi 10 menit setelah mesin dihidupkan untuk pertama kalinya setiap hari, yang akan menyebalkan. Bagaimanapun, cron.dailytidak cocok untuk ini.
poolie
cron.daily dijalankan setiap malam pukul 6.25 di sistem saya. Ini biasanya diatur ke menit acak antara 06:00 dan 06:59. Lihat / etc / crontab Anda untuk waktu yang ada di sistem Anda
elzapp
1
Masalah terbesar dengan menggunakan cron.daily untuk ini adalah bahwa hal itu dapat mengganggu pekerjaan lain di cron.daily.
elzapp
1

Anda harus membuat skrip menggunakan arahan yang diberikan oleh Kees Cook ...

Anda bisa menyalin dan menempelkan informasi di bawah ini di editor teks apa pun dan membuat zz-rebootfile di direktori yang disarankan.

Setelah itu hanya ingat untuk mengklik kanan pada file tersebut dan memberikan izin eksekusi. Jika Anda merasa ingin menggunakan terminal, cukup:

sudo chmod +x /etc/cron.daily/zz-reboot

Untuk memahami lebih baik apa yang Anda lakukan, ingat bahwa dalam /etcfolder Anda biasanya menemukan file konfigurasi dan di sana Anda dapat menemukan cron.hourly, cron.dailydan folder cron lainnya. Cron menangani eksekusi aplikasi dan skrip pada waktu tertentu.

Jika Anda ingin ketat tentang waktu reboot hanya digit

sudo crontab -e

sehingga Anda dapat mengedit crontabuntuk pengguna root.

Jika Anda merasa lebih baik melakukannya secara grafis, Anda dapat menginstal dari Pusat Perangkat Lunak sesuai jadwal. Jika Anda ingin memodifikasi gnome-scheduleuntuk root, pastikan Anda menjalankannya dari terminal:

gksudo gnome-schedule

Bersenang-senang bermain-main! :)

ps: poin bagus sBlatt! Saya bertanya-tanya apakah ada cara untuk memaksa cron.dailywaktu eksekusi secara manual.

Pitto
sumber
Di / etc / crontab ada entri untuk menyesuaikan waktu, tetapi afaik, jika komputer mati saat ini, ia akan menjalankan beberapa menit setelah komputer mulai
sBlatt
1

Saya telah bekerja dengan cronjobs selama sekitar satu bulan di pekerjaan saya dan penjadwalan poweroff, dan reboot. Ini sangat sederhana. Saya tahu ini ditanyakan sekitar 5 tahun yang lalu, tetapi jika ada yang masih memiliki masalah, Anda dapat menggunakan metode ini dan Anda akan ditetapkan.

buka terminal (ctrl + T)

sudo nano /etc/crontab

gulir semua jalan ke bawah dan masukkan perintah di bawah ini

00 6 * * * root reboot 

ini diatur untuk reboot pukul 6 pagi setiap hari, dan tekan enter

Jika Anda ingin menjadwalkan poweroff pukul 11 ​​malam setiap hari, Anda dapat masuk

00 23 * * * root poweroff

Saya masih perlu mencari tahu cara menyalakan mesin menggunakan cronjob ketika sedang down. Saya akan mengedit jawaban ini setelah saya mengetahuinya.

NB Ini adalah jawaban pertama saya yang memposting di formulir apa pun; semoga membantu seseorang !! : D

techfashionista
sumber
3
Ada jawaban dengan konten yang sama dari 5 tahun yang lalu dengan lebih detail dan verifikasi sintaksis otomatis (melalui crontab -e).
David Foerster
1
Jangan lupa untuk me-restart cron:sudo /etc/init.d/cron restart
brcebn