Solusi 1:
Kuncinya adalah mengetahui bahwa CentOS menjalankan skrip di /etc/cron.{daily,weekly,monthly} dari anacron
... /etc/anacrontab
sedang mengatur RANDOM_DELAY
, yang melakukan apa yang Anda harapkan (tertunda hingga RANDOM_DELAY
menit sebelum memulai pekerjaan)...
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
Menyetel RANDOM_DELAY=0
/ START_HOURS_RANGE=3
memperbaiki masalah...
EDIT
Setelah berpikir lebih jauh, saya akan menghapus anacron
dan instal vixie normal cron
...
Solusi 2:
Bukan jawabannya, tetapi saya baru-baru ini mencoba mencari tahu karena alasan lain dan tidak dapat menemukan dokumentasi tentang bagaimana Redhat 6, Centos, dll menjalankan cron. Inilah yang saya rekayasa balik:
crond
masih berjalan saat startup sistem - memuat semua file dalam/etc/cron.d
/etc/cron.d/0hourly
menjalankan semua file di/etc/cron.hourly
/etc/cron.hourly/0anacron
menjalankananacron
- anacron memuat
/etc/anacrontab
/etc/anacrontab
berjalan (melaluirun-parts
)/etc/cron.daily
,/etc/cron.weekly
dan/etc/cron.monthly
Jadi, ini lebih rumit dari versi sebelumnya.
Dimungkinkan untuk memulihkan perilaku lama dengan menambahkan entri per jam, mingguan, dan bulanan kembali ke /etc/crontab
(yang sekarang kosong), tapi anacrontab
akan perlu diperbarui juga. Ini mungkin atau mungkin tidak merusak pembaruan di masa mendatang...
Solusi 3:
Jawaban lain mencakup bagaimana tetapi belum tentu mengapa . Alasan adalah untuk mencegah pekerjaan cron malam hari mematikan infrastruktur Anda. (Bayangkan penyimpanan bersama, atau mungkin 1000 server berjalan di satu host VM, atau hanya pekerjaan malam yang mengenai beberapa layanan jaringan.)
Saya selalu memecahkan masalah ini untuk rotasi log secara khusus pada sistem saya dengan memindahkan pekerjaan rotasi log tertentu dari cron.daily
ke entri dengan waktu hard-code di cron.d
. Dengan begitu, Anda masih mendapatkan proses yang terhuyung-huyung untuk layanan seperti updatedb di mana waktu sebenarnya tidak penting, tetapi waktu yang konsisten untuk rotasi log.
Tentu saja, ketika Anda mencapai ukuran tertentu, Anda ingin semua log Anda dikirim dari host ke server log, dan kemudian waktu rotasi file pada masing-masing node menjadi kurang penting, karena itu hanya ada untuk kenyamanan (biasanya mengikuti ekor file) atau sebagai langkah mundur terakhir. Lalu, Anda pasti atur rotasi pada server log Anda menjadi sistematis.