Если вы хотите запускать 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 не имеет субсекундной точности