Cron 运行我的脚本,但脚本没有执行任何操作,这与邮件错误有关吗?“状态为 0x004b#012”

Cron 运行我的脚本,但脚本没有执行任何操作,这与邮件错误有关吗?“状态为 0x004b#012”

我管理的一个 Ubuntu 10.10 网络服务器遇到了一个非常奇怪的问题。

我使用 ruby​​ 和 rake 编写了一个脚本来运行一些 tar 命令并对数据库进行 mysqldump。我在 root 用户 crontab 中安装了一个条目,如下所示:

0 0,12 * * * /bin/bash -l -c 'cd /my/script/path && rake backup:everything'

这在一台服务器上运行良好。然而在另一台服务器上,这似乎并没有真正执行我的脚本中的内容。

我知道这肯定会被叫停,因为当我跑的时候

grep CRON /var/log/syslog

它返回:

Mar 22 12:00:01 ServerName CRON[10273]: (root) CMD (/bin/bash -l -c 'cd /my/script/path && rake backup:everything')

但它肯定没有执行脚本中所述的操作。

当我直接运行这样的脚本时:

cd /my/script/path && sudo rake backup:everything

它运行完美。

我也在两台服务器的 crontab 中执行了此操作:

0 0,12 * * * /bin/bash -l -c 'cd /my/script/path && rake backup:everything >> output.txt'

(就像我在脚本中时不时地做的“把‘备份 x 文件夹’放进去”)

在 cron 作业运行的服务器上,它会创建 output.txt 文件并将预期输出放入其中,如“开始备份”等。

然而,在服务器上,它无法正常工作,它只会创建文件,但文件会留空。但是,当我再次从 syslog 复制命令并手动运行它时:

sudo /bin/bash -l -c 'cd /my/script/path && rake backup:everything >> output.txt'

它运行良好并且输出符合预期。

我现在可能是在无奈,但这可能与此有关:

CRON[10271]: (root) MAIL (mailed 55 bytes of output but got status 0x004b#012)

这出现在系统日志中每一个cron 调用。我实际上只有这个 cron 作业和另一个用于更新系统时钟的小作业,但从外观上看,它们都没有正常工作。

错误的邮件配置会终止我的 cron 任务吗?有可能吗?

答案1

您应该在 cron 行中提供 rake 的完整路径。例如:

/sbin/rake或者它实际居住的任何地方。

如果 rake 所在的路径不在您的根用户路径中,它将无法运行。

如果是邮件,您应该会在邮件日志中看到一些内容。检查一下。

答案2

处理 cron 时,请务必考虑环境变量。最好运行导入环境变量 (source) 的 bash 脚本并运行命令。

相关内容