tmux 入门:远程会话断线了,你的任务还在跑
远程服务器上跑一个训练任务,动不动就是几小时甚至一夜。最怕的不是任务跑得慢,而是 SSH 一断,终端里跑着的进程跟着一起没了——第二天早上打开电脑,只剩一句 connection closed,和一个从头再来的任务。tmux 就是为了解决这个问题而生的。它是一个终端复用器:把你的 Shell 会话托管在一个独立的服务端进程里,和你的 SSH 连接解耦。网络断了,会话还在服务器上跑;重新连上来,一条命令就能回到原来的屏幕,输出一行都不少。先装好它。大多数发行版一行命令就能装:Debian/Ubuntu 用 sudo apt install tmux,CentOS/RHEL 用 sudo yum install tmux,macOS 用 brew install tmux。装好后输入 tmux new -s train,就新建了一个名叫 train 的会话,名字自己取,见名知意最好。在会话里正常跑你的命令,比如 python train.py。想离开时别直接关终端,按 Ctrl+b 再按 d,会话就“分离”了,任务继续在后台跑。随时用 tmux ls 看有哪些会话,用 tmux attach -t train 回到指定会话。任务跑完了,用 tmux kill-session -t train 把它清掉。一个会话里还能开多个窗口和窗格。Ctrl+b c 新建窗口,Ctrl+b n/p 在窗口间切换;Ctrl+b % 左右分屏,Ctrl+b " 上下分屏,Ctrl+b 加方向键在窗格之间移动。日志、训练、监控各占一格,一个屏幕全看清。断线重连的正确姿势就三步:重新 SSH 登录服务器;tmux ls 确认会话还在;tmux attach -t train 回去。哪怕中途笔记本合盖、Wi-Fi 切换,任务都不会因为你这边断线而中断。再给两个让 tmux 更顺手的小设置,写进 ~/.tmux.conf:set -g mouse on 开启鼠标支持,可以直接点窗格、拖动边框;set -g history-limit 50000 把滚动回看的行数调大,方便翻旧日志。改完后 tmux source-file ~/.tmux.conf 生效,或者新开会话自动加载。最后提醒几个新手常踩的坑:第一,会话名别用默认的数字,用 train、deploy 这种有意义的名字;第二,exit 是退出当前 Shell,窗口里所有 Shell 都退出会话才会结束,别把分离(Ctrl+b d)和退出搞混;第三,服务器重启后会话会消失,关键任务还是要把结果及时写盘。对常年和远程服务器打交道的人来说,tmux 不是锦上添花,而是基本功。它不解决算力问题,但能让你从“盯着终端不敢断网”的状态里解放出来。花十分钟装好它、记住分离和恢复这两个动作,今晚的长任务就可以放心交给服务器了。
- 点赞
- 收藏
- 关注作者
评论(0)