tmux使用

tmux 使用

最近项目中需要 ssh 到堡垒机上运行一个脚本, 但是由于SRE那边的设置, 连接一段时间后就会断开连接. 导致长时间脚本立刻停止运行

然后发现使用 tmux 可以解决这个问题

简介

tmux 的英文名是 terminal multiplexer, 荣用户可以在一个终端内管理多个分离的会话

优点: 不受断网影响, 可以保存工作进度

原理

正常情况下, ssh 到 server, 当 ssh 断掉之后, server 会 kill 掉程序

如果使用 tmux

tmux 这边采用 c/s 结构, 键入 tmux, tmux 服务器会启动, 并创建一个 session. 也就是一个 bash 环境. 重点是这个环境是与当前 ssh 连接独立. 这样 ssh 断开不会影响这个 session.

使用

1
2
3
4
5
6
7
8
9
10
11
# 进入Linux机器
ssh <your host name>

# 安装tmux
sudo apt install tmux

# 对每一个需要持续运行的程序
$ cd <your working directory> # go to the corresponding working drectory
$ tmux new -s <your session name> # create new tmux session
$ <command to start your server>
$ control + b d # to detach

常用 tmux 命令

在 shell 主进程下, 可以用以下命令操作 tmux session

Function(作用) Command (命令)
新建有命名的 tmux session tmux new -s session-name
列出所有 tmux session tmux ls
进入上一次的 tmux session tmux a (aattach )
进入名称为 test 的 tmux session tmux a -t test-ttarget
删除名称为 test 的 tmux session tmux kill-session -t test
删除所有的 tmux session tmux kill-server

在 tmux session下, 可以用以下命令操作 tmux session

先按前缀快捷键 control+b

  • $ 重命名当前session
  • s 弹出列表,可以选择进入不同 session
  • d detach sessio,返回至 shell 主进程

tmux 其他用处

可以屏幕共享, 如果 A 创建一个 session, B ssh 到此机器 tmux attach session, 这样 A 和 B 就可以看到互相的 session 的操作.

参考资料

  1. https://www.cxyzjd.com/article/u014261408/89931729
  2. https://www.jianshu.com/p/8be9e77f4284