【发布时间】: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 服务器,但老实说,这里有很多误解。