即使关闭终端后,如何在后台运行 python 程序?

即使关闭终端后,如何在后台运行 python 程序?

我正在我的 Ubuntu 机器上的终端上运行一个 Python 程序,

$ python test.py

但是如果我关闭终端,整个程序就会停止,有没有办法在后台运行这个 python 程序,这样如果我关闭终端,它仍然会继续运行?

并且在后台运行该程序后,如果我再次登录到该终端,如何知道我的实际程序是否仍在运行?

答案1

在脚本中使用 shebang 行python。使用命令使其可执行,

chmod +x test.py

即使你关闭了终端,也可以使用 no hangup 在后台运行程序,

nohup /path/to/test.py &

或者简单地(不对程序做任何更改)

nohup python /path/to/test.py &

不要忘记使用& 将其放在背景中。

的角色nohup nohup使你的脚本忽略SIGHUP以及重定向标准输出/标准错误到文件禁止运行,这样命令就可以在您注销后继续在后台运行。如果您关闭 shell/终端或注销,您的命令将不再是孩子那个壳。它属于在里面进程。如果您进行搜索,pstree您会看到它现在归进程 1 (init) 所有。

要再次查看该过程,请在终端中使用,

ps ax | grep test.py

无法将其恢复到前台,因为前台(因为终端已经关闭)不再存在。因此,一旦关闭终端,就无法再次将其恢复。

答案2

python test.py &

将在后台运行该文件。

为了找到正在运行的程序,您可以使用ps -e列出所有正在运行的程序。您可以使用grep从列表中找到您的特定程序。

相关内容