aturan jadwal kesalahpahaman aturan crontab

1

Saya punya beberapa perilaku aneh dari satu aturan yang tidak terduga.

*/40 * * * * myshellcommand here

Saya pikir itu akan berjalan setiap 40 menit, misalnya

00.00
00.40
01.20
02.00
etc

tapi itu berjalan

00.00
00.40
01.00
01.40
02.00
etc.

Adakah yang tahu apa yang salah?

heksimal
sumber

Jawaban:

3

Tidak ada yang salah. Ini berfungsi sebagaimana dimaksud. * me-reset sendiri di awal setiap jam / hari / bulan. Dengan kata lain, * adalah stand-in untuk rentang maksimum nilai yang dipermasalahkan. Jadi * dalam kolom menit adalah 0-59, dan * / 40 berarti "mulai dari 0, jalankan setiap 40 menit hingga 59". Lihat 'Karakter khusus' pada halaman Wikipedia cron untuk info lebih lanjut.

Apa yang mungkin perlu Anda lakukan adalah menjalankan pekerjaan setiap 20 menit, dan minta program memutuskan apakah itu akan berjalan atau tidak. Atau, lakukan dengan dua baris

0,40 0,2,4,6,8,10,12,14,16,18,20,22 * * * myshellcommand
20   1,3,5,7,9,11,13,15,17,19,21,23 * * * myshellcommand

Perhatikan bahwa ini dapat ditulis dalam bentuk yang sedikit lebih ringkas:

0,40 */2    * * * myshellcommand
20   1-23/2 * * * myshellcommand

Dalam hal ini, * / 2 menunjukkan setiap jam kedua mulai dari 0 (karena * sama dengan 0-23), dan 1-23 / 2 menunjukkan setiap jam kedua mulai dari jam 1.

nyanyian pujian
sumber
Terima kasih. mungkin kamu benar. jika tidak ada pendapat lain yang muncul, saya akan menerima jawaban Anda sebagai benar
heximal