我正在尝试使用os.system
(很快将替换为subprocess
)来调用shell脚本(将进程作为守护进程运行)
os.system('/path/to/shell_script.sh')
shell脚本如下所示:
nohup /path/to/program &
如果我在本地环境中执行此shell脚本,则必须在返回到控制台之前按Enter键,因为shell脚本正在将进程作为守护程序运行。如果我在python中执行上面的命令,我还必须在返回控制台之前按Enter键。
但是,如果我在python程序中执行此操作,它将永远挂起。
如何在调用运行进程作为守护进程的shell脚本后让python程序恢复执行?
答案 0 :(得分:2)
来自here -
在脚本中,在后台运行带有&符号的命令(&) 可能导致脚本挂起,直到ENTER被命中。这似乎与 写入stdout的命令。
你应该尝试将输出重定向到某个文件(如果你不需要,可以将其重定向),如果你真的不需要输出,可以name
。
/dev/null
答案 1 :(得分:0)
为什么不尝试使用单独的线程? 将您的流程整理成类似
的内容def run(my_arg):
my_process(my_arg)
thread = Thread(target = run, args = (my_arg, ))
thread.start()
签出加入和锁定以更好地控制线程执行。 https://docs.python.org/2/library/threading.html