问题描述
我正在 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
从列表中查找您的特定程序。