crontab 不启动一个脚本

crontab 不启动一个脚本

我的 crontab 有问题 - cron 没有启动我的脚本之一

这是我的 crontab (root) 的顶部部分

SHELL=/bin/bash

#---------------------------------------
# Items availability
#---------------------------------------


# Daily offer import + daily sync everything
30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log

# Updates availability
# 7:45 mass update happens
*/5 0-6 * * *   /var/www/import/check_availability.sh
0,5,10,15,20,25 7 * * * /var/www/import/check_availability.sh
*/5 8-23 * * * /var/www/import/check_availability.sh

#---------------------------------------
# Sales import + sync
#---------------------------------------

# Import EBAY + WWW sales. Run sales cleaner
*/15 * * * *    /var/www/import/import_all.sh
*/5 * * * *     /var/www/import/import_www.sh
55 13 * * *     /var/www/import/import_all.sh
58 13 * * *     /var/www/import/import_www.sh

... more stuff 7KB total ...

它曾经在很长一段时间内完美工作,但在上周重新启动该线路后

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log

停止工作。 download_offers.sh 的内容:

#!/bin/sh

echo "Working..."

echo "Download offers started" > /var/log/import/OFFER_START.log

... some private stuff ; just bunch of wget's and echo's ...

文件/var/log/import/OFFER_START.log未创建

到目前为止我已经尝试过什么

  • 我把时间改成了7:30、8:00(原来是7:45)
  • 我添加了> /var/logs/download_offers_cron.log但文件尚未创建
  • 我浏览了根电子邮件,除了一个脚本之外的所有脚本都已启动
  • 文件是 +x 可执行文件

有一些已知的错误吗?除了邮件之外还有其他选项可以调试 crontab 吗?为什么脚本根本不启动?上周重启后它曾经工作正常......

请帮助我失去理智

编辑:

我正在使用 CentOS 版本 6.6(最终版)

这是/var/log/cron

Mar 10 07:30:01 serverpro1 CROND[11291]: (root) CMD (/var/www/import/download_offers.sh > /var/logs/download_offers_cron.log)

看起来 cron 条目没问题,但是没有 /var/log/download_offers_cron.log 文件?

答案1

它又神奇地起作用了

我唯一改变的是

30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log
                                                             ^^ here

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log
                                                             ^^ here

为什么它会导致错误并且脚本根本不起作用?我不知道

为什么脚本首先停止工作是未解之谜

答案2

检查 /var/log/syslog 文件中关于 cron 作业的内容。从日志中查找单词“cron”并检查错误是什么。使用下面的命令来检查相同的内容。

grep -i cron /var/log/syslog

否则你提到的一切都很好。

答案3

你的 crontab 说要使用 bash,但是当你运行脚本时,你实际上再次使用 'sh' shell,因此你丢失了所有环境变量。我上周刚刚遇到这个问题。我的问题是当脚本在 cron 中运行时我没有路径变量,但是当我手动运行它时脚本运行良好。

您可以通过在脚本顶部的 #!/bin/sh 之后执行此操作来测试这一点:

echo $PATH
echo $path
sleep 10

当你的脚本由 cron 运行时。我不记得“sh”使用了哪条路径,所以回显两者。

也许不要在脚本中使用“sh”?

或者,对于您运行的每个实用程序,输入该实用程序的完整路径、每个输入和每个输出文件。

所以如果你的脚本说:

wget ...

您可以将其替换为完整路径:

/usr/bin/wget ...

或者任何正确的路径是什么。

(我还不能添加评论,所以无法回复评论。抱歉。)

答案4

这似乎是一个打字错误。
在您使用的第一个脚本中/var/log ,但在新脚本中它是/var/logs. Log 是标准目录,但您似乎使用 logs

相关内容