使用crontab每分钟执行一个脚本,另一个脚本每24小时执行一次。

321

我需要一个crontab语法,它应该每分钟执行特定的PHP脚本/var/www/html/a.php。每分钟的执行必须从00:00开始。另一个任务必须在00:00执行脚本/var/www/html/reset.php(每24小时执行一次)。

2个回答

595

4
亲爱的Jan!回答得很好。那每30秒运行一次cron怎么做呢?是这样吗?* * * * */30 /path/to/php /var/www/html/a.php? - flaab
27
很遗憾,你无法比每分钟更频繁地运行cron作业。你需要使用其他工具来实现这个功能。 - Jan Hančič
10
Jan Hančič,你能做到这一点。你只需要使用在这里描述的简单技巧:https://dev59.com/tHNA5IYBdhLWcg3wQ7Yw#1034304。 - Ruben
每分钟使用cron执行.php脚本是正常的做法吗?这会降低服务器的生产力吗?还有其他不良副作用吗? - Andrew
@flaab 每30秒钟你可以尝试以下操作:-
          • curl --silent URL >/dev/null 2>&1
          • sleep 30; curl --silent URL >/dev/null 2>&1
- Shashank Shah

382

这是 /etc/crontab 的格式:

# .---------------- 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) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

我建议将其复制并粘贴到您的crontab文件顶部,这样您就可以随时方便地参考。RedHat系统默认采用此设置。

要每分钟运行某个东西:

* * * * * username /var/www/html/a.php

每天午夜运行某个任务的方法:

0 0 * * * username /var/www/html/reset.php

你可以在运行命令时包含 /usr/bin/php,或者直接使php脚本可执行:

chmod +x file.php

在你的 PHP 文件开头添加一个 shebang,这样你的 shell 就知道使用哪个解释器:

#!/usr/bin/php
<?php
// your code here

42
这是“/etc/crontab”文件的格式,它是系统级别的crontab文件。用户级别的crontab有不同的格式,因为它不包括用户名字段,因为它以提交该任务的用户身份运行。如果您想作为非root用户运行cron job,则应使用“crontab”命令进行提交(而不必担心crontab存储在哪里)。除非确实需要,否则不要尝试更改“/etc/crontab”。 - Keith Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接