使用Tmux进行对Linux主机的管理

Tmux是一个用来替代Screen的多窗口管理工具.由于CentOS8官方源已经不再提供screen,其替代品就是Tmux(Terminal MultipleXer)。

安装

dnf makecache
dnf install -y tmux
# 进入Tmux
tmux
# 退出
exit

基本使用

# 创建一个名为t1的tmux会话,默认初始编号为0
$ tmux new -s t1
# 临时退出当前会话,即分离会话
$ tmux detach # 或使用crtl+b d
# 再创建一个新的会话t2和t3
$ tmux new -s t2
$ tmux new -s t3
# 查看当前tmux所有会话
$ tmux ls
t1: 4 windows (created Thu Oct 28 18:09:28 2021) [189x42]
t2: 1 windows (created Thu Oct 28 18:12:42 2021) [189x42]
t3: 1 windows (created Thu Oct 28 18:14:33 2021) [189x42]
# 杀死会话t3
$ tmux kill-session -t t3
$ tmux ls
t1: 4 windows (created Thu Oct 28 18:09:28 2021) [189x42]
t2: 1 windows (created Thu Oct 28 18:12:42 2021) [189x42]
# 切入会话t1
$tmux attach-session -t t1
# 从t1会话切换到t2
$tmux switch-client -t t2
# 重命名会话
$ tmux ls
t2: 1 windows (created Thu Oct 28 18:25:57 2021) [189x42]
t3: 1 windows (created Thu Oct 28 18:26:02 2021) [189x42]
$ tmux rename-session -t t2 t4
no current client
$ tmux ls
t3: 1 windows (created Thu Oct 28 18:26:02 2021) [189x42]
t4: 1 windows (created Thu Oct 28 18:25:57 2021) [189x42]

窗口操作

# 进行窗口操作需要先进入tmux终端
# 上下分割窗口
$ tmux split-window
# 左右分割窗口
$ dtmux split-window -h
# 移动光标
# 光标切换到上方窗格
$ tmux select-pane -U
# 光标切换到下方窗格
$ tmux select-pane -D
# 光标切换到左边窗格
$ tmux select-pane -L
# 光标切换到右边窗格
$ tmux select-pane -R
# 当前窗格上移
$ tmux swap-pane -U
# 当前窗格下移
$ tmux swap-pane -D

快捷键

# 会话快捷键
Ctrl+b d:分离当前会话。
Ctrl+b s:列出所有会话。
Ctrl+b $:重命名当前会话。

# 窗口快捷键
Ctrl+b %:划分左右两个窗格。
Ctrl+b ":划分上下两个窗格。
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格与上一个窗格交换位置。
Ctrl+b }:当前窗格与下一个窗格交换位置。
Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
Ctrl+b x:关闭当前窗格。
Ctrl+b !:将当前窗格拆分为一个独立窗口。
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
Ctrl+b q:显示窗格编号。

基本流程

# 新建会话
tmux new -s my_session。
# 运行程序
htop
# 会话分离
按下快捷键Ctrl+b d
#重新连接到会话
tmux attach-session -t my_session

自动启动

# 在/etc/profile尾行添加如下内容并重启
# TMUX
if which tmux >/dev/null 2>&1; then
# if no session is started, start a new session
test -z ${TMUX} && tmux

# when quitting tmux, try to attach
while test -z ${TMUX}; do
tmux attach || break
done
fi