在后台运行shell脚本

时间:2015-01-29 01:12:31

标签: python shell

我有一个shell脚本,我使用os.system("./name_of_script")

在Python中调用

我更愿意根据用户输入进行此调用(即用户输入“start”并完成调用,python程序中的其他一些内容也完成,当用户键入“stop”脚本时但是我发现这个调用完全集中在终端上(我真的不知道它的正确用法,但基本上整个程序在这个调用中停止,因为我的shell脚本执行直到收到键盘中断)。然后,当我执行键盘中断时,这是shell脚本停止执行的唯一时刻,之后执行其余代码。这在python中是否可行?

1 个答案:

答案 0 :(得分:2)

简单地构建Popen对象,如:

p = subprocess.Popen(['./name_of_script'])

...启动指定的程序而不阻塞它完成。

如果您以后想知道它是否已完成,您可以查看p.poll()以了解其状态的更新。

这比os.system()更快更安全,因为它不涉及shell(除非你调用的脚本自己运行),所以你不会暴露你自己去shellshock,shell注入漏洞或其他不必要的shell相关问题。