我有一个没有运行的 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 作业就是不想运行。
我已经没有调试这个东西的想法了。事实上,我之前做过一次没有任何麻烦,这让我很沮丧。我确定这是我忽略的简单事情,但我不知道它可能是什么。
在此先感谢您的帮助。
->稍后.....香料