我正在使用pexpect在内部应用程序上运行启动命令。 start命令启动许多进程。当这些进程在后台一个接一个地启动时,一切看起来都不错,但是当“启动”进程完成并且预期进程结束时,已经启动的进程也会消失。
child = pexpect.spawn('foo start')
child.logfile = log
child.wait()
在这种情况下,我可以使用nohup,它可以按预期工作。
child = pexpect.spawn('bash -c "nohup foo start"')
但是,对于具有相同问题的同一内部应用程序,也有一个安装程序,安装的一部分是启动进程。安装程序是交互式的,需要输入,因此nohup无法正常工作。
如何在pexpect会话结束时防止安装程序启动的进程死掉?
注意:从标准终端会话执行时,启动和安装过程可以正常工作。它们不以任何方式绑定到会话。
答案 0 :(得分:0)
我在文档中找不到很多,但是在spawn命令中包含“ ignore_sighup = True”选项解决了我的问题。
child = pexpect.spawn('foo start', ignore_sighup=True)