tmux 上手指南:让 SSH 远程任务不再怕断线
【摘要】 作为开发者,我们经常要通过 SSH 登录云服务器跑一些耗时任务:编译代码、下载大文件、跑训练脚本。最让人头疼的是:本地网络一波动,SSH 断开,终端里跑了一半的任务就跟着退出,前功尽弃。tmux 就是为解决这个问题而生的终端复用工具。它能在服务器上创建一个“持久会话”,即使 SSH 断开,会话里的程序依然在后台运行;重新连上服务器后,一条命令就能回到之前的终端现场。 安装大多数 Linux ...
作为开发者,我们经常要通过 SSH 登录云服务器跑一些耗时任务:编译代码、下载大文件、跑训练脚本。最让人头疼的是:本地网络一波动,SSH 断开,终端里跑了一半的任务就跟着退出,前功尽弃。
tmux 就是为解决这个问题而生的终端复用工具。它能在服务器上创建一个“持久会话”,即使 SSH 断开,会话里的程序依然在后台运行;重新连上服务器后,一条命令就能回到之前的终端现场。
安装
大多数 Linux 发行版都可以通过包管理器直接安装:
# Ubuntu / Debian
sudo apt install tmux
# CentOS / RHEL
sudo yum install tmux
核心概念:会话、窗口、面板
tmux 有三层结构:
- 会话(Session):一个独立的工作环境,可以理解为一个“工作区”;
- 窗口(Window):会话里的标签页,一个会话可以开多个窗口;
- 面板(Pane):窗口内的分屏,一个窗口可以切成多个面板。
记住这个层级,后面的快捷键就都好理解了。
上手:四个命令够用
新建一个命名会话:
tmux new -s deploy
在会话里跑你的耗时任务,比如:
./long-running-task.sh
然后按下 Ctrl+b 再按 d,将会话“挂起”(detach)。此时可以放心关闭 SSH,任务仍在服务器上继续跑。
第二天重新 SSH 登录服务器,恢复会话:
tmux attach -t deploy
终端原样回来,任务输出都在。查看当前所有会话:
tmux ls
常用快捷键速查
所有快捷键都以 Ctrl+b 为前缀(先按住 Ctrl 再按 b,松开后再按下面的键):
d:挂起当前会话c:新建窗口n/p:切换到下一个 / 上一个窗口%:左右分屏;双引号键:上下分屏- 方向键:在面板之间移动
x:关闭当前面板
一个实用场景
假设要在云服务器上部署应用:左边面板 tail -f 实时看日志,右边面板执行部署脚本,两个面板同时盯。中间网络抖动断开 SSH 也完全不怕,重新 tmux attach 回来,一切都在原地。
小结
tmux 学习成本很低,记住 new、attach、ls 三个命令和 Ctrl+b d,就能解决 90% 的“断线丢任务”问题。如果你经常和远程服务器打交道,建议今天就装上试试。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)