前言

使用python code.py指令在云服务器的终端中跑代码时,存在一个问题:当我直接关毕浏览器时,终端会随之终止,程序也停止运行,无法实现24h不停运行。后经查询资料,有多种方法解决,这里记录使用tmux实现关毕浏览器和终端后程序不中断的步骤。

本次使用的是火山29/年的云服务器(很是实惠了),之前使用autodl训练模型时,使用python code.py运行代码时,在关毕终端后,程序依旧会自动运行,所以这里提醒应该不是所有的服务器都需要使用tmux。

原因

原本以为在服务器终端通过python code.py跑代码时,该程序不是简单的存活于浏览器中打开的当前终端。之所以有这种想法是因为之前使用autodl时,代码确实能不间断运行,只要不关闭服务器。但这次在火山云的那一款服务器中却发现,程序是存在于相应终端,当浏览器关毕时,终端也随之终止,进而程序也终止。所以,就需要通过某种方法,使得程序不会随终端终止而终止。这里记录的方法是tmux。

操作系统:centos,对于其他操作系统,大家可以直接询问ai,在相应操作系统里如何使用tmux

tmux

tmux(Terminal Multiplexer,终端复用器)是一个在 单个 SSH 会话里 就能同时开很多“窗口 / 面板”并保持会话 断线不断任务 的工具, 是云服务器、长任务、多人协作的必备神器。

需求 没有 tmux 有 tmux
断网/关电脑 任务被杀死 任务在后台继续跑
同时看多份日志 开多个 SSH 一个 SSH 里分屏
多人共享操作 无法看到同一屏 同时 attach 到同一会话
窗口太多 Ctrl+Z/bg 难管 Ctrl+b c 随意建新窗口

步骤

安装tmux

sudo yum install -y tmux

创建并进入会话

tmux new -s pyjob

其中pyjob是会话名称,可根据任务场景自行修改。屏幕会清空,底部出现绿色状态栏,说明你在名为 pyjob 的 tmux 会话里了

在会话里启动程序

cd /path/to/your/code          # 先切到代码目录
python code.py                 # 或者 python3 code.py

此时输出会直接刷在 tmux 窗口里。

安全脱离会话

前缀键 Ctrl + b,松开后再按 d(detach)。如此,即返回普通shell

另外,可随时重新连回会话查看程序运行情况,在普通shell中使用以下指令:

tmux attach -t pyjob

# 常用指令

# 1. 新建会话
tmux new -s work
​
# 2. 断开会话(任务继续跑)
Ctrl+b d
​
# 3. 重新连上
tmux attach -t work
​
# 4. 分屏
Ctrl+b %   # 垂直
Ctrl+b "   # 水平
​
# 5. 切换窗口
Ctrl+b 0 1 2 …
​
# 6. 退出会话
exit
​
# 7. 列出所有会话
tmux ls
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐