【问题标题】:How to properly execute a CRON job without CPanel?如何在没有 CPanel 的情况下正确执行 CRON 作业?
【发布时间】:2015-09-18 21:21:43
【问题描述】:

我尝试使用多种变体,但由于我转移到另一个主机,因此未能正确运行 CRON 作业。

在我刚刚调用如下图所示的 http 链接之前:

文件名/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

那个代码不起作用,谁能告诉我我做错了什么?

【问题讨论】:

  • 使用 php 执行 shell 命令执行第二个 php 脚本似乎是多余的。为什么不在 crontab 中直接使用 php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1
  • 我也试过了,但似乎也不起作用,我不知道 crontab 将该文件存储在哪里,或者我应该将它保存在哪里。也许我应该存储它并调用它或以某种方式运行它?谢谢你的回复
  • 如果您的 cron 作业失败或生成任何输出,您应该会收到电子邮件。您是否将 SHELL 和 HOME 行放在 crontab 中?我以前从未见过。
  • 我要测试的一件事是设置一个 cronjob echo "test cron" >>SomeFile 来测试它是否正在运行。
  • 这是 Jason 上面的一个很好的建议。所以你可以对 cron 进行迷你测试……也许你可以让它每分钟运行一次,然后用“cat”、“tail”或其他 Linux 命令检查文件,看看它是否正常工作。

标签: php laravel cron ubuntu-14.04


【解决方案1】:

您当前的 cron 设置为运行 PHP,然后调用另一个 PHP 脚本。您可以通过在 crontab 中调用该命令来大大简化此操作:

0 8,12,14,16,19,23 * * * php /var/www/domain.com/artisan domaincom:cron argument1 argument2 --option1

正如其他人在 cmets 中所述,将输出发送到文件可能有助于故障排除。这可以通过在命令末尾添加>> ~/output.txt 来完成,以将输出存储在主目录中名为output.txt 的文件中(当然,您可以选择任何其他路径)。

【讨论】:

    【解决方案2】:

    您应该检查您的用户是否有权执行 cron 作业。当您登录到您的 VPS 时,您使用特定用户登录(除非您使用 root 访问权限)。

    因此,您可以在 /etc/cron.allow 中查看您的用户是否在此处列出。如果不是,您可以在一行中添加您的用户名。还要检查 /etc/cron.deny 以查看是否列出了您的用户名,或者那里是否列出了 ALL。如果 ALL 列在那里,则意味着您肯定需要将用户名添加到 /etc/cron.allow

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2012-06-29
      相关资源
      最近更新 更多