Cron工作提前终止

Olh*_*sky 1 bash cron

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

01 * * * * bash /etc/m/start.sh
Run Code Online (Sandbox Code Playgroud)

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

sudo bash -c "/etc/m/abc.sh --option=1" &
sleep 2
sudo bash -c "/etc/m/abc.sh --option=2" &
Run Code Online (Sandbox Code Playgroud)

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

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

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

我该如何调试?

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

Mar*_*ijn 5

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

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

MAILTO=your@email.address.here.com
01 * * * * bash /path/to/something.sh
Run Code Online (Sandbox Code Playgroud)

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

$ sudo bash -c "foo.sh" > output_file 2>&1 < /dev/null
Run Code Online (Sandbox Code Playgroud)

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