【问题标题】:Cron job terminates earlyCron 作业提前终止
【发布时间】:2011-11-13 00:22:37
【问题描述】:

在我的 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 脚本在后台运行数小时直到完成)。

我该如何调试?

我正在做些什么来阻止这些脚本在后台运行,直到它们完成?

【问题讨论】:

    标签: bash cron


    【解决方案1】:

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

    如果您设置了 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 中找到)可能包含有用的提示。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2021-12-22
      • 1970-01-01
      • 2011-05-28
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      相关资源
      最近更新 更多