Tmux解决VPS的SSH掉线问题
/0x00 前言
参考Micro8系列第三十六课:https://micro8.gitbook.io/micro8/contents-1/31-40/36-jie-jue-vps-shang-ssh-diao-xian
0x01 Tmux
简介
Tmux是一个优秀的终端复用软件(Terminal multiplexer),类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行Tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。
会话与进程
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称”窗口”),在里面输入命令。用户与计算机的这种临时的交互,称为一次”会话”(session) 。
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。
为了解决这个问题,会话与窗口可以”解绑”:窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话”绑定”其他窗口。
Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离。
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
- 它可以让新窗口”接入”已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。
基本用法
安装:
1 | # Ubuntu 或 Debian |
安装完成后,键入tmux
命令,就进入了 Tmux 窗口。
具体的Tmux用法参考:http://www.ruanyifeng.com/blog/2019/10/tmux.html
使用场景
Tmux的使用场景如下:
- 当某个程序在执行时一直是输出状态,需要结合nohup、&来放在后台执行,并且需要ctrl+c结束。这时可以打开一个Tmux窗口,在该窗口里执行这个程序用来保证该程序一直在执行中,只要Tmux这个窗口不关闭;
- 公司需要备份数据库时,由于数据量巨大,备份两三天弄不完,这时不小心关闭了终端窗口或误操作就前功尽弃了,使用Tmux会话运行命令或任务可以解决该问题;
- 下班后,需要断开SSH或关闭电脑,将运行的命令或任务放置后台运行;
- 关闭终端,再次打开时原终端里面的任务进程依然不会中断;
- 在渗透过程中,意外因网络等原因SSH掉线,Tmux可以恢复session会话;
常用操作命令
- tmux new -s session1 新建会话
- ctrl+b d 退出会话,回到shell的终端环境 //tmux detach-client
- tmux ls 终端环境查看会话列表
- ctrl+b s 会话环境查看会话列表
- tmux a -t session1 从终端环境进入会话
- tmux kill-session -t session1 销毁会话
- tmux rename -t old_session_name new_session_name 重命名会话
- ctrl + b $ 重命名会话 (在会话环境中)