当前位置: 首页>>技术教程>>正文


如何在关闭终端后仍在后台运行Python程序?

,

问题描述

我正在 Ubuntu 机器的终端上运行 python 程序,

$ python test.py

但是如果我关闭终端,我的整个程序将停止,有没有什么方法可以在后台运行这个python程序,这样如果我关闭终端,它仍然继续运行?

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

最佳办法

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

chmod +x test.py

即使关闭终端,也不会挂起在后台运行程序,

nohup /path/to/test.py &

或者简单地(不对您的程序进行任何更改)

nohup python /path/to/test.py &

不要忘记使用 & 将其置于后台。

nohup 的作用: nohup 使您的脚本忽略 SIGHUP ,并将 stdout/stderr 重定向到文件 nohup.out ,以便该命令可以在您注销后继续在后台运行。如果关闭 shell/终端或注销,您的命令将不再是该 shell 的 child。它属于init进程。如果您在 pstree 中搜索,您将看到它现在属于进程 1 (init)。

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

ps ax | grep test.py

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

次佳办法

python test.py &

将在后台运行该文件。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14443.html,未经允许,请勿转载。