在云服务器中使用tmux实现程序24小时运行
前言
使用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