SSH跑一个耗时任务(编译、下载、数据处理),网络一断任务就中断,前功尽弃?或者想在一个SSH连接里同时开好几个工作区?tmux能解决这些——它是服务器运维必备的终端复用神器。本文带你快速入门。
一、tmux解决什么问题?
- 断线任务不中断(最重要):任务跑在tmux会话里,SSH断了任务照常运行,重连后恢复现场——再也不怕网络抖动毁掉长任务;
- 一个连接多个工作区:不用开好几个SSH窗口,一个连接里分屏、多窗口同时干活;
- 持久工作环境:关掉笔记本,服务器上的工作现场还在,明天重连接着干。
(功能上和老牌的screen类似,tmux更现代、更强大,推荐用tmux。)
二、安装与基础
apt install tmux -y
tmux # 新建会话
tmux new -s work # 新建命名会话"work"
进入tmux后,你就在一个”会话”里了。核心概念:会话(session)包含窗口(window),窗口可以分成多个窗格(pane)。
三、最关键的操作:分离与恢复
这是tmux的精髓——分离(detach)让会话在后台继续跑:
按 Ctrl+b 然后按 d # 分离会话(任务继续在后台跑)
# 现在可以安全断开SSH,任务不受影响
# 重新连上服务器后:
tmux ls # 列出所有会话
tmux attach -t work # 恢复到"work"会话,现场还在!
就是这么简单:跑长任务前先 tmux,启动任务,Ctrl+b d 分离,断线也不怕,重连 tmux attach 继续。
四、常用快捷键(前缀都是Ctrl+b)
tmux的操作是”先按前缀 Ctrl+b,松开,再按功能键”:
- Ctrl+b d:分离会话;
- Ctrl+b c:新建窗口;
- Ctrl+b n / p:切换到下一个/上一个窗口;
- Ctrl+b 数字:切换到指定编号窗口;
- Ctrl+b %:左右分屏(垂直分割窗格);
- Ctrl+b “:上下分屏(水平分割);
- Ctrl+b 方向键:在窗格间移动;
- Ctrl+b x:关闭当前窗格。
五、典型使用场景
- 跑长任务:数据迁移、编译、大文件下载、批量处理——放tmux里,断线无忧;
- 多任务同屏:一个窗格看日志(tail -f)、一个窗格跑命令、一个窗格看监控(htop),分屏一目了然;
- 长期驻留的交互程序:需要在前台跑又想保持的程序(虽然更规范的做法是用systemd,参考systemd篇)。
六、tmux vs systemd:什么时候用哪个?
常有人混淆:
- tmux:适合交互式、临时性的任务——你要盯着、要操作的长任务;
- systemd(参考systemd篇):适合长期后台服务——需要开机自启、崩溃自愈的正式服务(Web应用、Bot、数据库)。
简单说:临时跑个把小时要盯着的任务用tmux;要7×24常驻的正式服务用systemd。别用tmux跑正式生产服务(重启就没了)。
结论
tmux是运维效率神器:核心价值是”断线任务不中断”(Ctrl+b d分离、tmux attach恢复),外加多窗口分屏管理。跑任何耗时任务前,养成先开tmux的习惯,再也不怕网络抖动前功尽弃。记住它和systemd的分工:临时任务tmux、正式服务systemd。在你的服务器上装个tmux,下次跑长任务时用起来,你会离不开它。