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.