运行部分代码后,将python代码移动到后台

时间:2015-06-08 13:14:41

标签: python background-process

我有一个python代码,它有一些需要在前台运行的部分,因为它告诉套接字连接是否正确。现在运行该部分后,输出将写入文件。

有没有办法在前台运行一些明确的步骤后自动将正在运行的python代码(进程)从前台移动到后台,以便我可以在终端上继续工作。

我知道使用screen是一个选项,但有没有其他方法可以这样做。由于在前台运行部件之后,终端中没有显示任何输出,我不想不必要地运行屏幕。

2 个答案:

答案 0 :(得分:4)

在python中,你可以从当前终端分离,注意这只能在类UNIX系统上运行:

# Foreground stuff
value = raw_input("Please enter a value: ")

import os

pid = os.fork()
if pid == 0:
    # Child
    os.setsid()  # This creates a new session
    print "In background:", os.getpid()

    # Fun stuff to run in background

else:
    # Parent
    print "In foreground:", os.getpid()
    exit()

在Bash中,你真的只能以交互方式做事。当您希望将python进程放入后台时,请使用CTRL + Z(前导$是泛型bash提示符的约定):

$ python gash.py
Please enter a value: jjj
^Z
[1]+  Stopped                 python gash.py
$ bg
[1]+ python gash.py &
$ jobs
[1]+  Running                 python gash.py &

请注意,在python代码中使用setsid()显示jobs中的进程,因为后台作业管理由shell完成,而不是由python完成。

答案 1 :(得分:1)

如果您拥有#!/ bin / env python,并且其权限设置正确,您可以尝试类似nohup /path/to/test.py &

的内容