Если вы хотите запускать cron каждую n
минуту, есть несколько возможных вариантов в зависимости от значения n
.
n
делит 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Здесь решение простое, если использовать /
обозначения:
m-59/n * * * * command
В приведенном выше примере n
представляет значение n
и m
представляет значение меньше n
или *
. Это выполнит команду в минутахm,m+n,m+2n,...
n
НЕ делит 60
Если n
не делит 60, вы не можете сделать это чисто с помощью cron, но это возможно. Для этого нужно поставить в cron тест, где тест проверяет время. Лучше всего это делать, глядя на временную метку UNIX, общее количество секунд с тех пор 1970-01-01 00:00:00 UTC
. Допустим, мы хотим запустить команду в первый раз, когда Марти Макфлай прибыл в Ривердейл, а затем повторять ее каждые n
несколько минут.
% date -d '2015-10-21 07:28:00' +%s
1445412480
Чтобы cronjob запускался каждую 42
ую минуту после `2015-10-21 07:28:00 ', crontab будет выглядеть так:
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
с minutetestcmd
определенным как
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
now=$(date "+%s")
minutes=$(( (now - starttime) / 60 ))
modulo=$2
(( now >= starttime )) && (( minutes % modulo == 0 ))
Примечание: на время UNIX не влияют дополнительные секунды.
Примечание: cron
не имеет субсекундной точности