第一次用 tmux 管理远程会话:断线也不丢任务的实战
在云服务器上跑一个长任务,最怕的就是 SSH 断线:本地网络一抖、笔记本一合盖,正在跑的脚本就跟着会话一起没了。tmux 解决的就是这个问题:它在服务器上保持一个会话,任务在会话里跑,和你的 SSH 连接解耦,断线了再连回来,任务还在。
一、先安装 tmux
Ubuntu / Debian:
sudo apt update && sudo apt install -y tmux
CentOS / Rocky:
sudo yum install -y tmux
装完输入 tmux -V 能看到版本号就说明可用了,不需要额外配置就能上手。
二、三个命令,先跑起来
新建一个会话:
tmux new -s backup
-s backup 是给会话起个名字,比默认的数字编号好认得多。在这个会话里启动你的长任务,比如备份、下载、编译。
要离开时按 Ctrl+B 再按 D,这叫分离(detach)。会话还在服务器后台跑,你可以放心断开 SSH。
下次登录后恢复:
tmux ls
tmux attach -t backup
tmux ls 列出所有会话,attach 就回到刚才的现场,屏幕上的输出一点没少。这就是 tmux 最核心的用法,先记住这三步就够了。
三、一个会话里开多个窗口
一个会话不够用时,不用再开多个 SSH。在 tmux 里按 Ctrl+B 再按 C 新建窗口,Ctrl+B 再按数字键切换窗口,Ctrl+B 再按 N 切换到下一个窗口。
比如一个窗口跑备份、一个窗口看日志、一个窗口写配置,互不干扰。窗口名字也可以改:Ctrl+B 再按 , 输入新名字,回车确认。
四、窗格:一个窗口分屏看
想同时看任务输出和日志,可以把一个窗口分成上下或左右两个窗格:Ctrl+B 再按 % 左右分屏,Ctrl+B 再按 " 上下分屏,Ctrl+B 再按方向键在窗格之间移动。
分屏后一边跑 tail -f 看日志,一边在另一边敲命令,排障时特别顺手。退出某个窗格直接输入 exit 即可。
五、一次完整的断线恢复实战
- 登录云服务器,执行
tmux new -s train新建会话。 - 在会话里启动长任务,例如
./run.sh > run.log 2>&1。 - 按
Ctrl+B再按D分离,关闭本地终端。 - 重新 SSH 登录,执行
tmux attach -t train,任务还在跑,日志也在。 - 任务跑完后,在会话里输入
exit,会话自动结束。
我第一次这样用时,特意在任务跑到一半时断开 Wi-Fi 再重连,看到进度没有丢失,才真正放心把长任务交给 tmux。
六、两个容易踩的坑
第一,tmux 保的是会话,不是服务器。服务器重启后,会话和里面的任务都会消失,真正重要的定时任务还是要交给 systemd 或定时任务去管。
第二,会话用完及时清理。tmux kill-session -t backup 删掉指定会话,tmux kill-server 删掉全部会话。长期留着一堆空会话,tmux ls 会越看越乱。
小结
tmux 不需要复杂配置就能解决远程工作里最常见的一个痛点:断线丢任务。记住 new、detach、attach 三个动作,再加窗口和窗格两个分屏技巧,日常的远程运维就够用了。下次要在服务器上跑超过十分钟的任务,先开一个 tmux 会话再动手。
- 点赞
- 收藏
- 关注作者
评论(0)