在运行python代码后将其移至后台

Rak*_*ish 4 python background-process

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

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

我知道使用screen是一种选择,但还有其他方法可以这样做。由于在前景上运行零件后,终端上将不会显示任何输出,因此我不想不必要地运行屏幕。

cda*_*rke 5

在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()
Run Code Online (Sandbox Code Playgroud)

在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 &
Run Code Online (Sandbox Code Playgroud)

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