Her n
dakika bir cron çalıştırmak istiyorsanız , değerine bağlı olarak birkaç olası seçenek vardır n
.
n
60'ı böler (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Burada çözüm, /
gösterimi kullanarak basittir :
m-59/n * * * * command
Yukarıda, n
değeri temsil eder n
ve veya m
değerinden küçük bir değeri temsil eder . Bu, komutu dakikalarda çalıştıracakn
*
m,m+n,m+2n,...
n
60'ı bölmez
Eğer n
60 bölmek değil, siz cron ile bu temiz yapamaz ama mümkün. Bunu yapmak için, testin zamanı kontrol ettiği cron'a bir test koymanız gerekir. Bu, en iyi UNIX zaman damgasına bakıldığında yapılır, o zamandan beri geçen toplam saniye 1970-01-01 00:00:00 UTC
. Diyelim ki, Marty McFly Riverdale'e ilk geldiğinde komutu çalıştırmaya başlamak ve ardından her n
dakika sonra tekrar etmek istiyoruz .
% date -d '2015-10-21 07:28:00' +%s
1445412480
Bir 42
cronjob'un "2015-10-21 07:28:00 '' den sonra her dakika çalışması için, crontab şöyle görünür:
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
olarak minutetestcmd
tanımlanan
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
now=$(date "+%s")
minutes=$(( (now - starttime) / 60 ))
modulo=$2
(( now >= starttime )) && (( minutes % modulo == 0 ))
Not: UNIX zamanı artık saniyeden etkilenmez
Not: cron
saniyenin altında doğruluğu yoktur