我想在 ubuntu 16.04 中为 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 列表,crontab -l
它说没有为 root 用户设置 cron 作业。
我尝试使用上述其中一行直接在 cron.hourly / cron.d 目录中创建一个 crontab.txt 文件。
我试过很多论坛,都说crontab -e
在 cron 目录中输入或创建 crontab 文件。但都帮不上忙。我真是百思不得其解。
在 ubuntu 16.04 和 php 版本 7.0 中为 php 脚本创建 cronjob 的正确方法是什么
答案1
crontab -e
不应该有root
指定用户名的部分(crontab -e
已经编辑特定用户的 crontab)。
如果您想以 root 身份运行,请执行sudo crontab -e
并使用:
* */2 * * * php /var/www/html/script.php
或者创建一个包含以下内容的文件/etc/cron.d
:
* */2 * * * root php /var/www/html/script.php
答案2
Crontab 的使用方法如下:当前用户可以省略crontab -u <username> -e
.-u <username>
部分。如果要将其用于 root 用户,可以使用sudo crontab -e
。然后输入计划安排* */2 * * *
,行中的最后一个参数是运行脚本的行。完成后,crontab 会输出您是否已成功安装作业的输出。您需要考虑最后一个参数的一些事项。
- 您是否安装了 php-cli?如果没有,php 将无法通过命令行运行。(
sudo apt-get install php7-cli
) - 安装 php-cli 后,请确保 crontab 找到 php 可执行文件。crontab 不一定具有相同的 $PATH。
which php
在 crontab 中输入并使用完整路径* */2 * * * /usr/bin/php /var/www/html/script.php
。它/usr/bin
应该在 crontab 的路径中。此步骤可能不需要,但不会造成任何影响。
Apache 与您的 crontab 脚本没有任何关系,因为在这种情况下,php 脚本是从命令行运行的。如果您的脚本依赖于一些无法在命令行中访问的 apache 相关数据,则 PHP 脚本可能会出现问题。