克朗运行我的脚本,但脚本不会做任何事情,与邮件错误? “得到状态0x004b#012”

我pipe理的一个Ubuntu 10.10 Web服务器有一个严重的问题。

我使用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作业正在工作的服务器上,它会创buildoutput.txt文件,并将预期的输出放在那里,比如“开始备份”等。

但是,在服务器上它不工作,它只创build该文件,但留空。 但是当我再次从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调用之后都会出现在syslog中。 我只是真的有这个cron工作,另一个小的更新系统时钟,但从它的外观没有一个正常工作。

是一个不正确的邮件configuration杀死我的cron作业? 这甚至可能吗?

你应该在cron行中提供rake的完整path。 就像是:

/sbin/rake或其实际存在的地方。

如果耙入的path不在你的根用户path中,将无法运行。

如果是邮件,你应该在邮件日志中看到一些东西。 在那里检查。

当你处理cron的时候总是考虑环境variables。 你最好运行input环境variables(源)的bash脚本并运行你的命令。