如何在没有 CPanel 的情况下正确执行 CRON 作业?
How to properly execute a CRON job without CPanel?
我尝试使用多种变体,但自从我搬到另一个主机后,未能 运行 正确地执行 CRON 作业。
在我刚刚调用 http link 之前,如下图所示:
文件名 /cron/synchronize.php
包含以下代码:
<?php shell_exec('php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1');?>
我找不到真正的crontab文件存储在哪里,所以我可以复制真正的代码...
现在,当我使用新主机时,我通过终端转到 /var/spool/cron
,然后在命令行 crontab -e
中输入代码:
SHELL=/bin/bash
HOME=/
0 8,12,14,16,19,23 * * * php /var/www/domain.com/cron/synchronize.php
那个代码不起作用,谁能告诉我我做错了什么?
您应该检查您的用户是否有权执行 cron 作业。当您登录到您的 VPS 时,您使用特定用户登录(除非您使用 root 访问权限)。
因此您可以在 /etc/cron.allow 查看您的用户是否列在那里。如果不是,您可以在一行中添加您的用户名。还要检查 /etc/cron.deny 以查看是否列出了您的用户名,或者是否列出了 ALL。如果 ALL 在那里列出,则意味着您肯定需要将您的用户名添加到 /etc/cron.allow
您当前的 cron 设置为 运行 一个 PHP 然后调用另一个 PHP 脚本。您可以通过在 crontab 中调用该命令来大大简化此操作:
0 8,12,14,16,19,23 * * * php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1
正如其他人在评论中所述,将输出发送到文件可能有助于故障排除。这可以通过在命令末尾添加 >> ~/output.txt
来完成,以将输出存储在主目录中名为 output.txt
的文件中(当然,您可以选择任何其他路径)。
我尝试使用多种变体,但自从我搬到另一个主机后,未能 运行 正确地执行 CRON 作业。
在我刚刚调用 http link 之前,如下图所示:
文件名 /cron/synchronize.php
包含以下代码:
<?php shell_exec('php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1');?>
我找不到真正的crontab文件存储在哪里,所以我可以复制真正的代码...
现在,当我使用新主机时,我通过终端转到 /var/spool/cron
,然后在命令行 crontab -e
中输入代码:
SHELL=/bin/bash
HOME=/
0 8,12,14,16,19,23 * * * php /var/www/domain.com/cron/synchronize.php
那个代码不起作用,谁能告诉我我做错了什么?
您应该检查您的用户是否有权执行 cron 作业。当您登录到您的 VPS 时,您使用特定用户登录(除非您使用 root 访问权限)。
因此您可以在 /etc/cron.allow 查看您的用户是否列在那里。如果不是,您可以在一行中添加您的用户名。还要检查 /etc/cron.deny 以查看是否列出了您的用户名,或者是否列出了 ALL。如果 ALL 在那里列出,则意味着您肯定需要将您的用户名添加到 /etc/cron.allow
您当前的 cron 设置为 运行 一个 PHP 然后调用另一个 PHP 脚本。您可以通过在 crontab 中调用该命令来大大简化此操作:
0 8,12,14,16,19,23 * * * php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1
正如其他人在评论中所述,将输出发送到文件可能有助于故障排除。这可以通过在命令末尾添加 >> ~/output.txt
来完成,以将输出存储在主目录中名为 output.txt
的文件中(当然,您可以选择任何其他路径)。