Tmux教程

2025年6月11日 248点热度

Tmux核心概念

架构理解

会话(Session) → 窗口(Window) → 窗格(Pane)

  • 会话(Session):独立的工作环境(如"数据分析任务")
  • 窗口(Window):会话中的全屏工作区(如"数据清洗"窗口)
  • 窗格(Pane):窗口内的分屏(如同时查看日志和运行命令)

安装Tmux

# Ubuntu/Debian
sudo apt install tmux
# CentOS/RHEL
sudo yum install tmux
# MacOS
brew install tmux

案例:运行Python程序并保持后台执行

场景需求

在服务器上运行main.py

  1. 关闭SSH窗口后程序继续运行
  2. 重新登录后能看到实时控制台输出
  3. 可以随时查看历史输出

解决方案

# 1. 创建名为python-app的会话
tmux new -s python-app
# 2. 在tmux会话中运行程序
python main.py
# 3. 分离会话(程序继续后台运行)
# 按下 Ctrl+B,然后按 D
# 4. 关闭终端窗口(程序继续运行)
# ---------- 重新登录后 ----------
# 5. 查看所有会话
tmux ls
# 输出:python-app: 1 windows (created Tue Jun 11 14:30:00 2025)
# 6. 重新连接会话
tmux attach -t python-app

高效Tmux操作指南

会话管理(核心功能)

操作 命令 快捷键
创建命名会话 tmux new -s <name> -
分离当前会话 tmux detach Ctrl+B D
列出所有会话 tmux ls -
连接指定会话 tmux attach -t <name> -
重命名当前会话 tmux rename-session <name> Ctrl+B $
关闭指定会话 tmux kill-session -t <name> -

窗口操作(任务分组)

操作 命令 快捷键
新建窗口 tmux new-window Ctrl+B C
重命名当前窗口 tmux rename-window <name> Ctrl+B ,
切换到上一个窗口 - Ctrl+B P
切换到下一个窗口 - Ctrl+B N
窗口列表 - Ctrl+B W
关闭当前窗口 - Ctrl+B &

窗格操作(分屏管理)

操作 命令 快捷键
垂直分割 tmux split-window -h Ctrl+B %
水平分割 tmux split-window -v Ctrl+B "
切换窗格 - Ctrl+B ↑↓←→
关闭当前窗格 - Ctrl+B X
全屏当前窗格 - Ctrl+B Z
交换窗格位置 tmux swap-pane -U/-D -

常见问题解决方案

Q:恢复会话时提示"会话不存在"?

# 检查所有会话
tmux ls

# 如果会话确实存在但无法连接,尝试
tmux attach -t <name> || tmux new -s <name>

Q:程序崩溃后如何自动重启?

# /etc/systemd/system/myapp.service
[Unit]
Description=Python Application

[Service]
User=ubuntu
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/python3 main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

Q:如何查看Tmux中运行的程序?

# 在tmux会话外查看进程
ps aux | grep main.py

# 在tmux会话内查看
Ctrl+B : 然后输入 list-panes -a

xxs9331

这个人很懒,什么都没留下

文章评论