Cronjob berjalan sebelum waktu yang dijadwalkan, apa yang bisa salah?
10
Saya memiliki jadwal crontab di bawah untuk hari Sabtu yang jatuh antara hari 19-23, saya tidak yakin mengapa itu berjalan pada tanggal 20 (Jumat). Ada tebakan?
Anda mungkin menemukan beberapa inspirasi dalam /etc/cron.d/mdadmdigunakan di Ubuntu dan Debian. Beginilah cara kerjanya pada hari Minggu pertama setiap bulan:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
kasperd
Terima kasih kasperd, 0 18 * * 6 [date +\%d -le 07] && <task> bekerja dengan baik untuk saya, di mana ia harus dijalankan pada hari Sabtu pertama setiap bulan.
simer
Jawaban:
16
Ekspresi Cron itu diterjemahkan menjadi:
At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.
Jadi secara eksplisit menyuruh cron untuk menjalankan pada hari Jumat tanggal 20. Ini karena:
When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute
&& current_hour == scheduled_hour && current_month == scheduled_month &&
(current_day == scheduled_date OR current_weekday == scheduled_weekday).
/etc/cron.d/mdadm
digunakan di Ubuntu dan Debian. Beginilah cara kerjanya pada hari Minggu pertama setiap bulan:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
0 18 * * 6 [date +\%d -le 07] && <task>
bekerja dengan baik untuk saya, di mana ia harus dijalankan pada hari Sabtu pertama setiap bulan.Jawaban:
Ekspresi Cron itu diterjemahkan menjadi:
Jadi secara eksplisit menyuruh cron untuk menjalankan pada hari Jumat tanggal 20. Ini karena:
Informasi ini adalah dari alat Cron ini berguna: http://crontab.guru/
Untuk membuat pekerjaan Anda berjalan pada hari-hari tertentu ketika hari Sabtu Anda dapat menggunakan:
Solusi ini dari crontab hari dalam seminggu vs. hari dalam sebulan?
sumber
%
memiliki arti khusus dalam cronjobs - ini memisahkan perintah stdin.