在Linux crontab中,我的程序的stderr必须重定向,为什么?
发布时间:2020-12-13 23:05:54 所属栏目:Linux 来源:网络整理
导读:我写了一个程序,可以输出到stderr.当我通过 Linux crontab运行它时,我必须重定向stderr.如果没有,程序将以SIGPIPE退出.为什么? 不好 45 10 * * * /home/sandy/test /home/sandy/test.log 好 45 10 * * * /home/sandy/test /home/sandy/test.log 21 解决方法
我写了一个程序,可以输出到stderr.当我通过
Linux crontab运行它时,我必须重定向stderr.如果没有,程序将以SIGPIPE退出.为什么?
不好 45 10 * * * /home/sandy/test > /home/sandy/test.log & 好 45 10 * * * /home/sandy/test > /home/sandy/test.log 2>&1 & 解决方法
您正在后台运行命令(& at the end).这意味着cron已经开始运行命令的shell将不会等待它的完成并在命令启动后立即终止.如果您的程序现在尝试写入stderr,则没有任何内容连接到读取端,您将获得一个SIGPIPE.如果重定向到文件,则不会发生这种情况,因为正在运行的进程知道要写入的位置.
解决这个问题的另一种方法是在前台运行命令,即没有& amp;在末尾.无论如何,这是更好的做法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读