Jeśli chcesz uruchamiać crona co nminuty, istnieje kilka możliwych opcji w zależności od wartości n.
n dzieli 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Tutaj rozwiązanie jest proste dzięki zastosowaniu /notacji:
m-59/n * * * * command
W powyższym noznacza wartość ni mprzedstawia wartość mniejszą niż nlub *. Spowoduje to wykonanie polecenia w minutachm,m+n,m+2n,...
n NIE dzieli 60
Jeśli nnie dzieli 60, nie można tego zrobić czysto za pomocą crona, ale jest to możliwe. Aby to zrobić, musisz umieścić test w cronie, w którym test sprawdza czas. Najlepiej jest to zrobić patrząc na znacznik czasu UNIX, czyli całkowitą liczbę sekund, które upłynęły od tego czasu 1970-01-01 00:00:00 UTC. Powiedzmy, że chcemy rozpocząć uruchamianie polecenia za pierwszym razem, gdy Marty McFly przybył do Riverdale, a następnie powtarzać je co nminuty później.
% date -d '2015-10-21 07:28:00' +%s
1445412480
Aby cronjob działał co 42nd minutę po `2015-10-21 07:28:00 ', plik crontab wyglądałby następująco:
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
ze minutetestcmdzdefiniowanym jako
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
now=$(date "+%s")
minutes=$(( (now - starttime) / 60 ))
modulo=$2
(( now >= starttime )) && (( minutes % modulo == 0 ))
Uwaga: na czas UNIX nie mają wpływu sekundy przestępne
Uwaga: cron nie ma dokładności poniżej sekundy