tmux详细教程

Author : zbzhen,        Modified : Sat Nov 30 13:24:58 2024

tmux 是一个终端复用器,允许用户在单个终端窗口中同时运行多个终端会话。它的名称是 "terminal multiplexer" 的缩写。

1. 基本介绍

1.1. 常用

1.1.1. 作用

  1. 多任务处理: 在一个终端窗口中同时运行多个终端会话,可以在不同会话之间快速切换,提高工作效率。
  2. 会话持久化: 即使断开了与服务器的连接,tmux 会话仍然保持活动状态,可以在重新连接后恢复。
  3. 分屏功能: 可以将终端窗口水平或垂直分割成多个窗格,方便同时查看多个终端输出。
  4. 自定义配置: 可以根据个人偏好自定义tmux的配置,包括键绑定、外观等。

1.1.2. 教程

以下是使用 tmux 的基本教程:

  1. 安装tmux:

    • 在大多数 Linux 发行版中,可以使用包管理器安装tmux,例如在 Ubuntu 上使用 sudo apt-get install tmux
    • 在 macOS 上,可以使用 Homebrew 进行安装,命令是 brew install tmux
  2. 启动tmux:

    • 在终端中输入 tmux 命令即可启动tmux。会创建一个新的tmux会话。
  3. tmux的基本键盘快捷键:

    • Ctrl+b 是默认的命令前缀,即按下 Ctrl+b 后再按其他键执行相应的命令。
    • Ctrl+b c 创建一个新的终端窗口。
    • Ctrl+b % 将当前窗口水平分割。
    • Ctrl+b " 将当前窗口垂直分割。
    • Ctrl+b arrow key 在窗格之间进行切换。
    • Ctrl+b d 断开当前tmux会话,但会话仍然在后台运行。
    • tmux attach 重新连接到以前的tmux会话。
  4. 配置文件:

    • tmux 的配置文件位于用户的 home 目录下的 .tmux.conf 文件中,可以在其中设置键绑定、外观等参数。
  5. 更多资源:

通过阅读这些资源和不断实践,你可以逐渐掌握tmux的使用技巧,并提高工作效率。

2. 具体使用

执行命令 tmux 会创建一个编号为 0 的会话,再次创建会话的编号会向后排列。执行 tmux new -s 可以创建一个自定义名称的会话。如创建一个名称为 session1 的会话:

tmux new -s session1

进入会话后可以执行一些长时间运行的命令。当需要退出该会话,将会话放在后台运行时。可以执行 tmux detach 命令,或使用快捷键 Ctrl + B,再按 D 来退出会话。退出会话后底部会话信息会消失,并提示已从会话退出。

需要恢复会话时,使用tmux a -t <session-name>,重新进入之前的会话中,如进入刚才名称为session1 的会话:

tmux a -t session1

在 tmux 会话中,可以使用快捷键 Ctrl + B,再按 C 来创建一个新的窗口。可以使用快捷键 Ctrl + B,再按数字键来切换不同的窗口。使用快捷键 Ctrl + B,再按 N 来切换到下一个窗口,使用快捷键 Ctrl + B,再按 P 来切换到上一个窗口。

需要删除会话时。如果当前在会话当中,可以使用 Ctrl + D 或执行 logout 退出 SSH 登陆,即终止当前会话。不在会话中时可以执行下列命令来删除会话。

# 删除指定会话
tmux kill-session -t session1
# 删除所有会话
tmux kill-server

3. 常用技巧

# 第一次执行
tmux new -s session1

# 重新进入
tmux a -t session1

# 内网穿透
ssh -CqTnNf -R 2222:localhost:22 xxx@47.106.123.156

最好是加入到开机启动和定时任务

crontab -e

然后写上

@reboot ssh -CqTnNf -R 2222:localhost:22 xxx@47.106.123.156

ssh -CqTnNf -R 2222:localhost:22 xxx@47.106.123.156 -o ServerAliveInterval=60 -o ServerAliveCountMax=1 

# 下面命令查看是自启动命令否修改成功
crontab -l

# 重启crontab服务
sudo service cron restart

并且在远程主机上的ssh配置代码写上

vim /etc/ssh/sshd_config
然后把 

PasswordAuthentication yes
ChallengeResponseAuthentication yes
修改成
PasswordAuthentication no
ChallengeResponseAuthentication no
PasswordAuthentication no
ClientAliveInterval 120
ClientAliveCountMax 720



修改后, 重启服务
sudo systemctl reload sshd
sudo systemctl restart sshd