Jika Anda ingin menjalankan cron setiap n
menit, ada beberapa opsi yang memungkinkan bergantung pada nilai n
.
n
membagi 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Di sini, solusinya langsung dengan menggunakan /
notasi:
m-59/n * * * * command
Di atas, n
mewakili nilai n
dan m
mewakili nilai yang lebih kecil dari n
atau *
. Ini akan menjalankan perintah pada menitm,m+n,m+2n,...
n
TIDAK membagi 60
Jika n
tidak membagi 60, Anda tidak dapat melakukan ini dengan rapi dengan cron tetapi itu mungkin. Untuk melakukan ini, Anda perlu menguji di cron tempat tes memeriksa waktu. Ini paling baik dilakukan saat melihat stempel waktu UNIX, total detik sejak 1970-01-01 00:00:00 UTC
. Katakanlah kita ingin menjalankan perintah pertama kali saat Marty McFly tiba di Riverdale dan mengulanginya setiap n
menit kemudian.
% date -d '2015-10-21 07:28:00' +%s
1445412480
Agar cronjob berjalan setiap 42
menit setelah `2015-10-21 07:28:00 ', crontabnya akan terlihat seperti ini:
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
dengan minutetestcmd
didefinisikan sebagai
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
now=$(date "+%s")
minutes=$(( (now - starttime) / 60 ))
modulo=$2
(( now >= starttime )) && (( minutes % modulo == 0 ))
Catatan: Waktu UNIX tidak dipengaruhi oleh detik kabisat
Catatan: cron
tidak memiliki akurasi sub-detik