如何在 CentOS 中关闭终端而不终止 Python 程序
在 Linux 上,特别是在 CentOS 系统中,有时需要在关闭终端的情况下继续运行 Python 程序。默认情况下,当你关闭一个终端时,所有在该终端中运行的进程都会被终止。不过,有几种方法可以避免这种情况。
使用 nohup
命令
nohup
是一个可以将程序挂起(No Hang Up)以使其在注销终端后继续运行的命令。使用 nohup
命令运行 Python 程序的基本语法如下:
nohup python your_script.py &
在这个命令中:
nohup
防止程序接收到挂起信号。your_script.py
是你的 Python 文件。&
符号将程序放入后台运行。
运行后,程序的输出会被写入一个名为 nohup.out
的文件,你可以通过以下命令查看输出:
cat nohup.out
使用 screen
命令
screen
是一个终端多路复用器,允许你在一个终端窗口中管理多个会话。使用 screen
运行 Python 程序的步骤如下:
-
启动一个新的 screen 会话:
screen
-
运行你的 Python 程序:
python your_script.py
-
分离会话(即关闭 terminal),按下
Ctrl + A
然后按下D
。 -
若要重新连接到会话,可以使用:
screen -r
使用 tmux
命令
tmux
功能与 screen
类似,也是一种终端复用工具。其使用方式如下:
-
启动
tmux
会话:tmux
-
运行你的 Python 程序:
python your_script.py
-
分离会话,使用
Ctrl + B
然后按下D
。 -
重新连接会话:
tmux attach-session -t 0
类图
通过下图展示了 Python 程序在不同工具下的执行方式的类图:
classDiagram
class Terminal {
+executeCommand()
}
class Nohup {
+runProgram()
}
class Screen {
+startSession()
+detachSession()
+reconnect()
}
class Tmux {
+startSession()
+detachSession()
+reconnect()
}
Terminal <|-- Nohup
Terminal <|-- Screen
Terminal <|-- Tmux
甘特图
下面的甘特图展示了在不同工具中执行 Python 程序的时间线:
gantt
title Python程序执行时间线
dateFormat YYYY-MM-DD
section Nohup
启动程序 :a1, 2023-10-01, 1h
查看输出 :after a1 , 1h
section Screen
启动会话 :b1, 2023-10-02, 1h
运行程序 :after b1 , 2h
分离会话 :after b1 , 1h
section Tmux
启动会话 :c1, 2023-10-03, 1h
运行程序 :after c1 , 2h
分离会话 :after c1 , 1h
结论
在 CentOS 系统中关闭终端而不终止 Python 程序是一项非常有用的技能。通过 nohup
、screen
和 tmux
这三种工具,可以实现这一目标。每种工具都有其独特的优点,你可以根据需求选择最适合你的那一个。希望这篇文章能够帮助你更好地管理你的 Python 程序,保持其在后台运行。