我有一个 cron 作业,我想每小时运行一次。之前我会每分钟运行一次,就像
* * * * * /var/www/html/cron.php
但我现在需要它每小时运行一次。这怎么办?.
如果您的操作系统是 FreeBSD,您可以使用
@every_second
例如:
@every_second /var/www/html/cron.php
对于其他系统,这可能有效:
每小时都有事:
@hourly /var/www/html/cron.php
或每 45 分钟一次:
*/45 * * * * /var/www/html/cron.php
来自 man 5 crontab:
string meaning
------ -------
@reboot Run once, at startup of cron.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
@every_minute Run once a minute, "*/1 * * * *".
@every_second Run once a second.
另外,请检查参考:https://crontab.guru/
如果您使用的系统不支持
@every_second
,您可以尝试以下操作:
* * * * * /var/www/html/cron.php
* * * * * (sleep 30; /var/www/html/cron.php)
基本上,它们同时运行(每分钟),但在开始之前会等待 30 秒,因此每 30 秒就会调用
/var/www/html/cron.php
。
crontab 的格式如下
m h dom mon dow command
所以你可以做
0 * * * yourcommand
每小时 00 分运行
对我来说,唯一可行的解决方案是:
2-59/* * * * *
翻译成简单的英语为:
从 2 点到 59 点,每 60 分钟一趟。
我几乎不了解 cron 语法,所以不确定这是否是唯一的方法,或者至少是更好的方法之一。
下面的代码对我有用。
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
* * * * * while : ; do sleep 1 ; php /var/www/html/code.php || break ; done
对我帮助很大。