![在 CentOS 上无需 GUI 在后台运行 Python 代码](https://linux22.com/image/1606308/%E5%9C%A8%20CentOS%20%E4%B8%8A%E6%97%A0%E9%9C%80%20GUI%20%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%20Python%20%E4%BB%A3%E7%A0%81.png)
我有一个 python 脚本,我想在我的 CentOS 服务器上执行它,这个操作系统没有 GUI,我通过它连接,putty
但我想在 Putty 中执行此代码,并且即使我从 Putty 注销也能让代码继续运行,有什么办法吗?
答案1
与之相反screen
,还有tmux
(终端多路复用器)。
它允许您创建可分离的会话,具有多个窗口和面板。当您需要离开计算机时,您可以分离并关闭 SSH 会话,然后当您需要返回时,您可以重新连接并附加到您之前离开的 tmux 会话。
基本控制措施包括(其中^B
为Control+ B):
tmux new
- 创建新会话^B
,D
- 脱离会话tmux attach
- 附加到最后一个会话exit
- 退出 shell 以终止 tmux 会话(或面板/窗口)
更高级的控制:
^B
,%
- 垂直分割窗口^B
,"
- 水平拆分窗口^B
,c
- 创建新窗口^B
,n
- 转到下一个窗口^B
,p
- 转到上一个窗口
答案2
最简单的方法可能是nohup
- 它将保护由它启动的程序免受挂断消息的影响,从而允许它在您注销时继续运行。程序产生的任何输出都将被重定向到文件中。这对于仅产生简单输出的程序来说很有效。如果有某种交互式界面(例如 curses),事情会变得更加复杂,您最好使用前面的答案。但对于简单的情况,nohup
我建议这样做。
用法:
nohup yourcommand
详细man nohup
内容
答案3
我建议屏幕https://www.gnu.org/software/screen/
你可以使用以下命令安装yum install screen
要启动屏幕会话,您只需运行screen
或screen -S mysession
一旦连接,您可以运行任何命令并从屏幕会话中分离,并且该命令将继续在后台运行。
要脱离屏幕会话(保持所有运行并返回到原始 shell),您可以按ctrl + a and d
断开与屏幕会话的连接后,您可以断开与 ssh 的连接。当您重新登录时,您可以使用列出所有屏幕会话,screen -ls
并使用重新连接到会话screen -r
Screen 非常强大且方便,我建议查看手册页以了解更深入的使用方法。