Если вы хотите запускать cron каждые n
минуту, есть несколько возможных вариантов в зависимости от значения n
.
n
делит 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Здесь решение простое, если использовать обозначение /
:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
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
nd минуту после `2015-10-21 07:28:00 ', crontab будет выглядеть так:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
с minutetestcmd
определенным как
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
# return UTC time
now=$(date "+%s")
# get the amount of minutes (using integer division to avoid lag)
minutes=$(( (now - starttime) / 60 ))
# set the modulo
modulo=$2
# do the test
(( now >= starttime )) && (( minutes % modulo == 0 ))
Примечание: на время UNIX не влияют дополнительные секунды.
Примечание. cron
не имеет субсекундной точности.
person
kvantour
schedule
14.02.2019
744
. - person Nitin Nain   schedule 09.09.2014php
в порядке? Проверьте,/usr/bin/php
сwhich php
. - person fedorqui 'SO stop harming'   schedule 09.09.2014