在 CentOS 上无需 GUI 在后台运行 Python 代码

在 CentOS 上无需 GUI 在后台运行 Python 代码

我有一个 python 脚本,我想在我的 CentOS 服务器上执行它,这个操作系统没有 GUI,我通过它连接,putty但我想在 Putty 中执行此代码,并且即使我从 Putty 注销也能让代码继续运行,有什么办法吗?

答案1

与之相反screen,还有tmux(终端多路复用器)。

它允许您创建可分离的会话,具有多个窗口和面板。当您需要离开计算机时,您可以分离并关闭 SSH 会话,然后当您需要返回时,您可以重新连接并附加到您之前离开的 tmux 会话。

基本控制措施包括(其中^BControl+ B):

  • tmux new- 创建新会话
  • ^B, D- 脱离会话
  • tmux attach- 附加到最后一个会话
  • exit- 退出 shell 以终止 tmux 会话(或面板/窗口)

更高级的控制:

  • ^B, %- 垂直分割窗口
  • ^B, "- 水平拆分窗口
  • ^B, c- 创建新窗口
  • ^B, n- 转到下一个窗口
  • ^B, p- 转到上一个窗口

tmux 示例

答案2

最简单的方法可能是nohup- 它将保护由它启动的程序免受挂断消息的影响,从而允许它在您注销时继续运行。程序产生的任何输出都将被重定向到文件中。这对于仅产生简单输出的程序来说很有效。如果有某种交互式界面(例如 curses),事情会变得更加复杂,您最好使用前面的答案。但对于简单的情况,nohup我建议这样做。

用法:

nohup yourcommand

详细man nohup内容

答案3

我建议屏幕https://www.gnu.org/software/screen/

你可以使用以下命令安装yum install screen

要启动屏幕会话,您只需运行screenscreen -S mysession

一旦连接,您可以运行任何命令并从屏幕会话中分离,并且该命令将继续在后台运行。

要脱离屏幕会话(保持所有运行并返回到原始 shell),您可以按ctrl + a and d

断开与屏幕会话的连接后,您可以断开与 ssh 的连接。当您重新登录时,您可以使用列出所有屏幕会话,screen -ls并使用重新连接到会话screen -r

Screen 非常强大且方便,我建议查看手册页以了解更深入的使用方法。

相关内容