我有一个python代码,它有一些需要在前台运行的部分,因为它告诉套接字连接是否正确。现在运行该部分后,输出将写入文件。
有没有办法在前台运行一些明确的步骤后自动将正在运行的python代码(进程)从前台移动到后台,以便我可以在终端上继续工作。
我知道使用screen
是一个选项,但有没有其他方法可以这样做。由于在前台运行部件之后,终端中没有显示任何输出,我不想不必要地运行屏幕。
答案 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 &