你是不是也遇到过:在服务器上跑一个长任务,SSH一断,任务也挂了。tmux就是解决这个问题的。下面是最常用的5个操作,5分钟学会。
tmux是什么
简单说:在服务器上开一个"虚拟终端",即使你SSH断线了,里面的程序继续跑。重新连上后可以"恢复"这个终端,看到之前的所有输出。
安装:Ubuntu/Debian用 apt install tmux,CentOS用 yum install tmux。基本所有Linux发行版源里都有。
5个核心操作
1. 新建会话
tmux new -s work
创建一个名叫"work"的会话。然后你在里面可以正常执行任何命令。即使SSH断开,里面的程序不受影响。
2. 断开(detach)
在tmux会话里按 Ctrl+B,松开,再按 D
快捷键规则:先同时按Ctrl和B,松手后按D。这会让你退出tmux会话,但程序还在后台跑。
3. 重新连接
tmux attach -t work
SSH重新连上服务器后执行这个命令,恢复之前的工作环境。所有输出都还在。
4. 分屏
• 左右分屏:Ctrl+B,然后按 %
• 上下分屏:Ctrl+B,然后按 "
这个功能很方便:一边看日志,一边写命令;或者一边编辑代码,一边运行测试。
5. 切换窗格和关闭
• 切换窗格:Ctrl+B,然后按方向键
• 关闭当前窗格:直接输入 exit 并回车,或者按 Ctrl+D
一个实际使用场景
比如你要在服务器上跑一个数据库导入,预计要2小时。不关机的那种。用tmux:
① SSH连上服务器
② tmux new -s import(新建会话)
③ 运行你的导入命令
④ Ctrl+B, D(断开会话)
⑤ 关掉SSH,去干别的
⑥ 2小时后SSH回来,tmux attach -t import(恢复会话)
⑦ 看到导入已经完成,所有输出都在
比nohup好用的地方:可以随时回来看到完整的输出,不只是日志文件。而且支持分屏、复制粘贴。
进阶用法
• tmux ls:列出所有会话
• tmux kill-session -t work:杀掉名叫work的会话
• 鼠标模式(tmux 2.1+):在~/.tmux.conf里加 set -g mouse on,就能用鼠标滚轮翻页、点击切换窗格
就这些。tmux属于那种"学了5分钟,受益一辈子"的工具。
还木有评论哦,快来抢沙发吧~