用 tmux 让远程任务不断线:会话、窗口与新手避坑

举报
yd_291459017 发表于 2026/11/04 13:27:18 2026/11/04
【摘要】 远程跑耗时任务,最怕 SSH 一断任务跟着停:网络一抖、笔记本一合盖,终端里的程序就没了。tmux 把任务放在服务器会话里跑,终端只是查看窗口,断线不等于任务结束。先理解一个关系:tmux 会话独立于 SSH 连接。新建会话后,哪怕你把终端关掉,会话还在服务器后台继续跑;下次再连上来,重新接回这个会话,就能看到任务跑到哪一步了。这比每次都祈祷网络不断要可靠得多。上手只要三步。第一步,在服务器...

远程跑耗时任务,最怕 SSH 一断任务跟着停:网络一抖、笔记本一合盖,终端里的程序就没了。tmux 把任务放在服务器会话里跑,终端只是查看窗口,断线不等于任务结束。

先理解一个关系:tmux 会话独立于 SSH 连接。新建会话后,哪怕你把终端关掉,会话还在服务器后台继续跑;下次再连上来,重新接回这个会话,就能看到任务跑到哪一步了。这比每次都祈祷网络不断要可靠得多。

上手只要三步。第一步,在服务器上新建一个见名知义的会话,比如 tmux new -s backup,名字最好用英文和项目名,不要用中文和空格,省得以后接回时敲错。第二步,任务跑起来之后按 Ctrl-b 再按 d,这是 detach,断开查看但不结束会话。第三步,下次登录后用 tmux attach -t backup 接回,用 tmux ls 可以先看当前有哪些会话,避免接错。

一个会话里还可以开多个窗口和分屏,适合同时看日志和敲命令。Ctrl-b c 是新建窗口,Ctrl-b n 和 Ctrl-b p 是前后切换窗口。Ctrl-b % 是左右分屏,Ctrl-b " 是上下分屏,分屏之间用 Ctrl-b 加方向键切换。某个分屏不用了,用 Ctrl-b x 关掉它;整个会话真的不用了,在里面执行 exit,或者用 tmux kill-session -t backup 结束;detach 是暂时离开,kill 是彻底结束。

新手最容易踩的坑有三个。第一,滚动查看历史输出时直接用鼠标滚轮可能没反应,要先按 Ctrl-b [ 进入复制模式,用方向键或 PageUp 翻看,按 q 退出。第二,不要在 tmux 里再套一层 tmux,快捷键会互相抢。第三,tmux 保的是断线不断任务,不是服务器重启不断任务,机器重启后会话一样会丢,真正重要的长任务还是要把输出重定向到日志文件里,tmux 负责不断线,日志负责留证据。

养成一个习惯就够了:一个项目一个会话,名字写清项目,离开用 detach,回来用 attach。这样网络再抖,也只需重新接回会话。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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