tmux:关掉终端也不中断的后台任务

举报
yd_296169327 发表于 2026/10/25 00:26:31 2026/10/25
【摘要】 我第一次用 tmux,是因为一次挺狼狈的经历。那天下午我在服务器上跑模型训练,命令跑起来之后,我顺手把 SSH 窗口关了,想着“反正跑完我再看”。结果再登上去一看,进程早没了,日志停在半路,训练白等了两小时。从那之后我就养成了习惯:只要是“跑起来就没必要一直盯着的活”,一律先扔进 tmux。先说清楚 tmux 到底解决什么,它治的病主要是三个。第一个是“关终端任务就死”。Linux 上你关掉...

我第一次用 tmux,是因为一次挺狼狈的经历。那天下午我在服务器上跑模型训练,命令跑起来之后,我顺手把 SSH 窗口关了,想着“反正跑完我再看”。结果再登上去一看,进程早没了,日志停在半路,训练白等了两小时。从那之后我就养成了习惯:只要是“跑起来就没必要一直盯着的活”,一律先扔进 tmux。

先说清楚 tmux 到底解决什么,它治的病主要是三个。

第一个是“关终端任务就死”。Linux 上你关掉终端,前台进程会收到 HUP 信号然后被干掉,不管它是训练脚本还是 tail -f。tmux 相当于在你的机器上开了一间独立的“进程客厅”:会话跑在 tmux 服务端里,终端只是它的显示器。你把显示器拔了,客厅里的电还接着。

第二个是“长任务想断开但又怕断”。以前我的做法是 nohup cmd & 加 > log 2>&1,倒也能用,但你只能靠 tail 猜进度,还没法中途钻进去看交互式提示。tmux 让你可以随时走人、随时回来。

第三个是“远程多窗口协作”。在服务器上同时要看日志、跑命令、盯监控,以前得开一堆 SSH 标签页。tmux 一个会话里可以切窗口、可以分屏,布局留在服务器上,你什么时候连上去看到的都是原样。

装起来

sudo apt install tmux

完整实战流程

新建一个叫 train 的会话:

tmux new -s train

进去之后正常敲你的命令,比如 ./train.py --epochs 100。底部会出现一条状态栏,左边写着 0:train,这就是你现在的会话名。

跑着跑着想去泡杯咖啡,按 Ctrl-b,松手,再按 d。屏幕上跳出 [detached from train],你回到了普通 shell,而训练还在服务器上跑得好好的。

查一下当前有哪些会话在跑:

tmux ls

输出大概长这样:

train: 1 windows (created Wed Oct 21 22:10:23 2026)

想回来的时候:

tmux attach -t train

进去之后那个滚动屏幕、跑了一半的日志都还在原地,跟你从没离开过一样。

不想要了,干净收工:

tmux kill-session -t train

顺手记几个快捷键

tmux 所有快捷键都是两段式的:先按 Ctrl-b(叫前缀键),松开,再按第二个键。我刚开始老是把 Ctrl-b 和 d 一起按,结果什么都没发生,记住要分两下。

  • Ctrl-b d:detach,离开但不杀任务
  • Ctrl-b s:列出所有会话,方向键选,回车切过去
  • Ctrl-b %:左右分屏
  • Ctrl-b ":上下分屏
  • Ctrl-b 方向键:在分屏之间挪
  • Ctrl-b c:开一个新窗口
  • Ctrl-b n / p:切换上/下一个窗口
  • Ctrl-b z:把当前窗口放大成全屏,再按一次还原

几个我常用的顺手操作

一是后台直接起一个会话,不进交互界面:

tmux new -s build -d './build.sh 2>&1 | tee build.log'

二是想知道跑到哪了,但不想 attach(远程机上 attach 会抢终端):

tmux capture-pane -p -t build | tail -20

三是跑任务时实时把屏幕内容存进日志:

tmux pipe-pane -o -t build 'cat >> build.log'

还有个小坑:会话名和窗口名容易搞混,tmux ls 看到的是会话,attach -t 跟的也是会话。别把窗口号当会话名用。

现在我的习惯是:任何超过两分钟的任务都先 tmux new -s,跑完再 kill-session 清干净。关终端、关标签页、断网,都不再影响它了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。