我有一个可变的程序列表,我想从一个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
为空。我怎么解决这个问题?
我通过使用来自detach
的不同命令http://inglorion.net/software/detach/解决了这个问题
但我现在认为这是不合适的。最好使用由cron作业脚本启动的oneshot服务,或者让你的cron条目启动onehot服务。
这样就没有必要分离,因为进程不是你的脚本,而是他们是主管的孩子。可以使用任何支持启动正常关闭服务并且在退出时不重新启动它的init。