【问题标题】:Setup a cronjob for PHP script in ubuntu & PHP在 ubuntu 和 PHP 中为 PHP 脚本设置 cron 作业
【发布时间】:2018-03-14 12:38:58
【问题描述】:

我想在 ubuntu 中为 PHP 脚本设置一个 cronjob

我在终端输入这个命令

$ crontab -e

然后我选择了 ubuntu 推荐的 nano 编辑器。然后我进入了打击线。然后我按 control+C,它要求 Y/N 保存。我按 Y 和 F2 关闭。

* */2 * * * root php /var/www/html/script.php

我尝试过的其他事情:

* */2 * * * /var/www/html/script.php
* */2 * * * root /var/www/html/script.php

之后,我使用以下命令重新启动 cron。

sudo /etc/init.d/cron restart

然后我使用crontab -l 检查 crontab 列表,它说没有为 root 用户设置 cron 作业。

我尝试使用上述行之一直接将 crontab.txt 文件创建到 cron.hourly / cron.d 目录中。

我尝试了很多论坛,都说crontab -e 然后在 cron 目录中输入或创建 crontab 文件。没有什么能帮助我。我在挠头。

在 ubuntu 16.04 和 php 版本 7.0 中为 php 脚本创建 cronjob 的正确方法是什么

【问题讨论】:

  • 您的 cronjob 条目末尾是否有换行符??
  • 不,我没有。
  • 在您的 cronjob 条目末尾添加换行符并重试? :)
  • 您需要做的第一件事是弄清楚您需要在 cron 条目中运行什么命令。你现在正在展示三种不同的东西。您是否真的直接在命令行上尝试过它们以查看哪个(如果有)有效?
  • 在保存/退出您的crontab -e 后,您是否获得了crontab: installing new crontab?您是以 root 身份登录还是使用“普通”用户登录?

标签: php cron


【解决方案1】:

尝试像这样使用root用户设置crontab,

sudo crontab -e

通过 nanovim 进行更改。最后保存退出

* */2 * * * /var/www/html/script.php
* */2 * * * root /var/www/html/script.php

无需使用此sudo /etc/init.d/cron restart再次重启

【讨论】:

  • 我想将 cron 作业设置为凌晨 3 点运行。
  • 哪个时区?
  • 设置为* 3 * * * root /var/www/html/script.php,另见crontab-generator.org
  • 如果我只运行这个命令可以设置 cron 作业 - * 3 * * * root /var/www/html/script.php
【解决方案2】:

试试这个(作为 root 用户): 1.sudo crontab -e

* */2 * * * php -f /var/www/html/script.php > /dev/null 2>&1

* */2 * * * cd /var/www/html/; php -f script.php > /dev/null 2>&1

对于以 www-data 用户身份运行的 crontab,使用命令 sudo crontab -u www-data -e 进行编辑

保存 crontasks 后将自动安装。

或 您可以使用内容 * */2 * * * php -f /var/www/html/script.php > /dev/null 2>&1 创建 tmp_crontask_file,然后使用 sudo crontab tmp_crontask_file 从文件(作为 root)sudo crontab -u www-data tmp_crontask_file(作为 www-data 用户)安装 cron。


编辑 1: 警告! 如果您从文件(最后一个选项)安装 cron,文件的内容会覆盖现有的 crontab。

【讨论】: