pengembangan-web-mp.com

Penjadwalan pekerjaan menggunakan crontab, apa yang akan terjadi ketika komputer dimatikan selama waktu itu?

Saya menjadwalkan beberapa tugas menggunakan crontab.

Apa yang akan terjadi jika komputer saya dimatikan atau dimatikan saat cron dijadwalkan melakukan sesuatu?

Apakah setiap pekerjaan cron yang terlewat berjalan setelah komputer dihidupkan, atau apakah pekerjaan yang terlewatkan untuk hari itu diabaikan? Jika pekerjaan tidak terjawab tidak dilanjutkan, apakah ada cara untuk mengkonfigurasi cron sehingga menjalankan tugas yang tidak terjawab setelah komputer dihidupkan kembali?

92
seg.server.fault

Ketika komputer Anda dimatikan (atau cron daemon tidak berjalan), tugas cron tidak akan dimulai.

Jika Anda memiliki pekerjaan yang ingin Anda jalankan setelah fakta pada saat-saat ketika komputer dimatikan, gunakan anacron. Diinstal secara default, lihat "man anacron", "man anacrontab", atau file/etc/anacrontab untuk info lebih lanjut.

Ubuntu menggunakan anacron secara default untuk entri crontab di:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

meninggalkan crontab yang tersisa untuk ditangani oleh daemon cron utama, khususnya:

/etc/crontab
/etc/cron.d
/var/spool/cron

CATATAN

Anacron sendiri tidak berjalan sebagai daemon, tetapi bergantung pada skrip startup sistem dan cron sendiri untuk dijalankan.

Pada kotak Ubuntu 8.04 yang saya cari, /etc/init.d/anacron dijalankan saat boot, dan lagi dengan cron setiap pagi pukul 07:30.

The README di /usr/share/doc/anacron/README.gz memiliki sedikit info lebih banyak daripada yang terkandung dalam halaman manual.

CONTOH

Untuk pekerjaan "harian", "mingguan", "bulanan" yang sederhana, masukkan salinan atau symlink ke skrip di salah satu direktori /etc/cron.{daily|weekly|monthly} di atas. Anacron akan menjalankannya setiap hari/mingguan/bulanan, dan jika komputer Anda mati pada hari skrip "mingguan" biasanya berjalan, ia akan menjalankannya saat komputer dihidupkan lagi.

Sebagai contoh lain, dengan asumsi Anda memiliki skrip di sini: /usr/local/sbin/maint.sh

Dan Anda ingin menjalankannya setiap tiga hari, entri standar di/etc/crontab akan terlihat seperti ini:

# m h dom mon dow user  command
0 0 */3 * * root /usr/local/sbin/maint.sh

Jika komputer Anda tidak aktif pada pukul 00:00 pada tanggal 3 bulan itu, pekerjaan tersebut tidak akan berjalan hingga tanggal 6.

Agar pekerjaan dijalankan alih-alih pada tanggal 4 saat komputer mati dan "melewatkan" proses pada tanggal 3, Anda akan menggunakan ini di/etc/anacrontab (jangan lupa untuk menghapus baris dari/etc/crontab):

# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh

"Penundaan" dari "5" di atas berarti bahwa anacron akan menunggu selama 5 menit sebelum menjalankan pekerjaan ini. Idenya adalah untuk mencegah anacron menembakkan hal-hal segera saat boot.

76
jeff

Ini tergantung pada penjadwal cron yang Anda gunakan. Dasar, Vanilla cron daemon tidak akan menjalankan tugas yang tidak terjawab karena downtime sistem. Namun, ada penjadwal cron lain yang dirancang khusus untuk situasi ini yang akan melakukan ini untuk Anda. Dua contoh paling umum adalah anacron dan fcron .

17
Tyler McHenry

Tugas yang dijadwalkan saat komputer mati tidak akan berjalan ketika komputer menyala kembali

6
Alan H

Jika Anda mematikan ketika pekerjaan cron berjalan, sistem dimatikan dan pekerjaan cron berhenti (atau tidak berjalan).

Salah satu alternatif yang bisa Anda periksa adalah anacron.

3
KPWINC

Sangat tergantung pada cron deamon yang Anda jalankan. Vixie-cron hanya akan melewatkan cronjobs yang tidak terjawab. fcron akan menjalankan crons yang terlewat sesegera mungkin. IIRC juga didasarkan pada vixie-cron, jadi jika itu yang Anda cari, Anda mungkin ingin memeriksa fcron.

3
gregf