我有一个可变的程序列表,想要从Cron作业开始。至少目前为止,我确定的解决方案是用python编写实际的cron作业,然后遍历列表,并从每个程序开始:
outf=open('the_command.log','w')
subprocess.Popen(['nohup','the_command', ...],stdout=outf)
outf.close()
问题是它创建了一个nohup.out文件-似乎每个进程都相同。如果我从命令行执行了相同的操作,则可能看起来像这样:
$ nohup the_command ... > the_command.log 2>&1
运行正常,除了运行时从nohup收到消息:
nohup: ignoring input and redirecting stderr to stdout
我尝试将stderr重定向到/ dev / null,但是结果是the_command.log
为空。我该怎么解决?
答案 0 :(得分:0)
我通过使用与http://inglorion.net/software/detach/不同的命令detach
来解决了这个问题
但是我现在认为这是不适当的。最好使用由cron作业脚本启动的oneshot服务,或者使cron条目导致启动oneshot服务。
有了这个,就不需要分离了,因为进程不是您的脚本子级,而是他们是主管的子级。可以使用支持启动正常关闭的服务并且退出时不重新启动它的任何初始化。