跳到主要内容

tmux - 终端复用、后台任务

tmux 是一个终端复用器,可以让进程在后台运行,即使关闭终端,任务仍然不会被终止。

在服务端安装 tmux

apt install tmux

以下是 tmux 的基本用法:


1. 启动一个新会话

tmux new -s mysession

这将创建一个名为 mysession 的 tmux 会话。


2. 分离(退出但保持运行)

在 tmux 会话中,按:

Ctrl + B,然后按 D

这会将你从 tmux 会话中分离,但任务仍然在后台运行。


3. 重新连接到会话

tmux attach -t mysession

如果你有多个会话,可以先查看:

tmux ls

然后连接到相应的会话:

tmux attach -t <session_name>

4. 关闭会话

tmux 会话中运行:

exit

或者使用:

tmux kill-session -t mysession

5. 创建多个窗口

tmux 会话中:

  • 新建窗口Ctrl + B,然后 C
  • 切换窗口Ctrl + B,然后 N(下一个) 或 P(上一个)
  • 关闭窗口exit

6. 分割窗口

  • 水平分割(上下):Ctrl + B,然后 "
  • 垂直分割(左右):Ctrl + B,然后 %
  • 切换面板Ctrl + B,然后 方向键

tmux 适用于长时间运行的任务,如服务器管理、编译代码等。

7. 使用案例

硬盘坏道检测

硬盘坏道检测通常需要很长的时间,以东芝mg08 14TB为例,全盘写入耗时12~14小时。为了避免中途退出终端,导致检测中止,最好使用 tmux 。

全盘写入测试

# 创建tmux会话
tmux new -s mysession

# 查看分区,确定要检测的硬盘
root@pve:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 12.7T 0 disk
├─sda1 8:1 0 16M 0 part
└─sda2 8:2 0 12.7T 0 part

# 使用此命令检测容量<=2TB的硬盘
root@pve:~# badblocks -wsv /dev/sda
badblocks: Value too large for defined data type invalid end block (13672382464): must be 32-bit value

# 使用此命令检测容量>2TB的硬盘
root@pve:~# badblocks -wsv -b 4096 /dev/sda
Checking for bad blocks in read-write mode
From block 0 to 3418095615
Testing with pattern 0xaa: 0.10% done, 0:51 elapsed. (0/0/0 errors)

# 分离会话:按ctrl+B,再按D
[detached (from session mysession)]

# 重新连接到会话
root@pve:~# tmux attach -t mysession