【问题标题】:Need help debugging a cron job需要帮助调试 cron 作业
【发布时间】:2012-09-16 00:27:27
【问题描述】:

我有一个未运行的 cron 作业。我在这方面的经验并不丰富,所以我可能遗漏了一些明显的东西,但我就是想不通。

这是来自 crontab 的相关文本。 (这是在某种 Windows 服务器上运行的。不幸的是,我不知道配置的详细信息。)

0,15,30,45 * * * * /usr/apps/nrbadm/php_invoker framework/index.php dc rezound newsql > /dev/null 2>&1
0,15,30,45 * * * * /usr/apps/nrbadm/php_invoker framework/index.php dc droid4 newsql > /dev/null 2>&1
0,15,30,45 * * * * /usr/apps/nrbadm/php_invoker framework/index.php dc ipad3 newsql &> /tmp/crn/ipad3.log
10,25,40,55 * * * * /usr/apps/nrbadm/php_invoker2 galaxys3_data.php >> /usr/apps/webdata/dashboards/cronlog.txt
10,25,40,55 * * * * /usr/apps/nrbadm/php_invoker2 galaxys3_data_full.php >> /usr/apps/webdata/dashboards/cronlog.txt
10,25,40,55 * * * * /usr/apps/nrbadm/php_invoker2 incredible4_data.php >> /usr/apps/webdata/dashboards/cronlog.txt
0,15,30,45 * * * * /usr/apps/nrbadm/php_invoker_gen queue_summary_data.php >> /usr/apps/webdata/cron/errorlog.txt

最后一行是行不通的。我包括了其他行进行比较,因为那些 正在 工作。前三行调用一个名为 php_invoker 的脚本。 (如果语法看起来很奇怪,那是因为这个脚本是在 CodeIgniter 环境中。)这些是由我替换的程序员设置的。

第二组 3 个是我设置的。我们正在将站点从 CodeIgniter 中移植出来,所以我不得不移植这些文件。我复制了 php_invoker,用必要的编辑制作了 php_invoker2,它工作了。因此,当需要设置这个新的时,我做了同样的事情,只是它没有运行。新脚本 php_invoker_gen 旨在运行服务器上“cron”文件夹中的任何 PHP 脚本。

这里是php_invoker_gen的全文:

#!/bin/bash

export LD_LIBRARY_PATH="/usr/apps/oracle/product/10.2.0/db_1/lib32:$LD_LIBRARY_PATH"

/usr/apps/php/bin/php -f /usr/apps/webdata/cron/$1

正如我所说,这是从原始 php_invoker 脚本复制而来的。我唯一改变的是最后一行的第二部分指向我试图运行的 PHP 脚本。我不完全理解这里发生的一切,但从我能够弄清楚的(如果我错了有人纠正我) $1 是一个变量,它被替换为在 crontab 中传递的值上面的行,所以“queue_summary_data.php。”

生成的路径应该是:

/usr/apps/webdata/cron/queue_summary_data.php

我已验证此路径是正确的。此文件的权限设置为 777。(我知道这有点矫枉过正,但我​​已经到了尝试任何东西的地步。)

我还验证了被调用脚本的路径是正确的:

/usr/apps/nrbadm/php_invoker_gen

该文件的权限设置为 755,因此它是可执行的。这与正在运行的其他两个脚本的权限级别相同。

如果我通过 PuTTY 登录服务器,我可以从命令行运行脚本。

/usr/apps/php/bin/php -f /usr/apps/webdata/cron/queue_summary_data.php

在终端窗口中输入时有效。脚本运行并正确更新数据。但是 cron 作业就是不想运行。

我已经没有办法调试这个东西了。事实上,我之前做过一次没有任何麻烦,这让我很沮丧。我确定这是我忽略的一些简单的事情,但我不知道它可能是什么。

提前感谢您的帮助。

->稍后.....香料

【问题讨论】:

  • 我相信是这样,尤其是因为其他 cron 脚本运行正常。我该如何检查?
  • 我会在您的 crontab 顶部添加 MAILTO="email@domain.com"。这样,任何响应/警告/错误都会通过电子邮件发送给您。你可以确保它至少在运行。
  • 您是否尝试过从命令行完全按照 cron 中的方式运行它?运行这个:/usr/apps/nrbadm/php_invoker_gen queue_summary_data.php >> /usr/apps/webdata/cron/errorlog.txt 看看你是否得到任何输出。
  • “这是在某种 Windows 服务器上运行”你确定吗?通常 cron 不会在 Windows 上运行,并且您的文件路径在 Windows 上设置完全错误。
  • 不,坦率地说,我不是。当我开始时,我被告知这是一个 Windows 服务器,但老实说,这里有很多误解。

标签: php cron crontab


【解决方案1】:

问题已经结束并回答了,脚本运行时导致错误的是脚本上的换行符。我在终端中编辑了服务器上的文件以删除它们并开始运行。谢谢大家!

【讨论】:

  • 如果这能解决您的问题,您应该将其标记为答案。
  • 我一直在努力。该网站不会让我在 X 小时内使用,因为我是新来的。它说我可以在 20 小时内接受这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多