我有一个python代码,它有一些部分需要在前台运行,因为它告诉我们socket连接是否正确。现在运行该部分后,输出将写入文件。将python代码运行后移到后台
有没有办法在前台运行一些明确的步骤后,自动从前台移动运行的Python代码(进程),以便我可以继续我的终端工作。
我知道使用screen
是一个选项,但有没有其他的方式来做到这一点。由于在前台运行一部分后,终端上不会显示任何输出,因此我不想不必要地运行屏幕。
我有一个python代码,它有一些部分需要在前台运行,因为它告诉我们socket连接是否正确。现在运行该部分后,输出将写入文件。将python代码运行后移到后台
有没有办法在前台运行一些明确的步骤后,自动从前台移动运行的Python代码(进程),以便我可以继续我的终端工作。
我知道使用screen
是一个选项,但有没有其他的方式来做到这一点。由于在前台运行一部分后,终端上不会显示任何输出,因此我不想不必要地运行屏幕。
在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完成。
如果您有#!/斌/包膜蟒蛇,它的权限设置是否正确,你可以尝试像nohup /path/to/test.py &
但是不会在启动后台运行程序吗? –
哦对。你能不能只按Ctrl-Z这个过程,然后用bg在后台重新启动?另外,如果你想把它带到前台,那么你可以使用fg – Jeremy
哪个操作系统和shell? – cdarke
Ubuntu 14.04LTS和bash –
您是否希望在python或bash中执行此操作? – cdarke