Cron工作提前终止

时间:2011-11-12 16:14:50

标签: bash cron

在我的crontab文件中,我执行一个这样的脚本(我使用sudo crontab -e编辑crontab):

01 * * * * bash /etc/m/start.sh

该脚本运行其他一些脚本,如下所示:

sudo bash -c "/etc/m/abc.sh --option=1" &
sleep 2
sudo bash -c "/etc/m/abc.sh --option=2" &

当cron运行脚本start.sh时,我会ps aux | grep abc.sh,我看到abc.sh脚本正在运行。

几秒钟后,脚本不再运行,即使abc.sh需要数小时才能完成。

如果我从命令行执行sudo bash /etc/m/start.sh &,一切正常(abc.sh脚本在后台运行几个小时,直到完成)。

如何调试?

我正在做的是阻止这些脚本在后台运行直到它们完成?

1 个答案:

答案 0 :(得分:5)

您正在启动的程序可能希望终端将其输出发送到或接收输入。

如果您设置了MAILTO=变量,并且安装了sendmail(-like)守护程序,您将收到一封包含其打印错误消息的电子邮件,如果有的话:

MAILTO=your@email.address.here.com
01 * * * * bash /path/to/something.sh

另一种调试方法是从命令行运行脚本,同时重定向所有输入和输出:

$ sudo bash -c "foo.sh" > output_file 2>&1 < /dev/null

此外,系统日志文件(通常位于/var/log中)可能包含有用的提示。