Linux常用命令-tmux

命令

tmux

描述

terminal multiplexer
多窗口终端管理器

用法

1
tmux [-2CluvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Options:
-C 在控制模式下启动
-c shell-command 使用默认shell执行命令
-f file 指定配置文件,全局配置文集/etc/tmux.conf,用户配置文件~/.tmux.conf
-L socket-name 默认socket保存在/tmp目录下
-S socket-path 指定socket文件路径,忽略-L选项
-u 使用UTF8编码
-v 记录详细的日志,保存在当前目录下的tmux-client-PID.log和tmux-server-PID.log
-vv 记录所有tmux输入内容到tmux-out-PID.log

常用命令
tmux new 创建默认名称的会话(在tmux命令模式使用new命令可实现同样的功能)
tmux new -s mysession 创建名为mysession的会话
tmux ls 显示会话列表
tmux a 连接上一个会话
tmux a -t mysession 连接指定会话
tmux detach 剥离会话
tmux rename -t s1 s2 重命名会话s1为s2
tmux kill-session 关闭上次打开的会话
tmux kill-session -t s1 关闭指定会话s1
tmux kill-session -a -t s1 关闭除s1外的所有会话
tmux kill-server 关闭所有会话
其他命令
tmux list-key 列出所有绑定的键,等同于prefix ?
tmux list-command 列出所有命令
tmux new -d -s testcmd 'top' 创建会话并执行命令挂起,注意命令必须在前台运行

常用快捷键
tmux所有快捷键都默认需要先按Ctrl+b,然后再键入对应的命令,prefix=ctrl+b
会话管理
prefix s 列出会话,可进行切换
prefix $ 重命名会话
prefix d 分离当前会话
prefix D 分离指定会话
prefix ? 查看命令帮助,q键退出
窗口管理
prefix c 创建一个新窗口
prefix , 重命名当前窗口
prefix w 列出所有窗口,可进行切换
prefix n 进入下一个窗口
prefix p 进入上一个窗口
prefix l 进入之前操作的窗口
prefix 0~9 选择编号0~9对应的窗口
prefix . 修改当前窗口索引编号
prefix ’ 切换至指定编号(可大于9)的窗口
prefix f 根据显示的内容搜索窗格
prefix & 关闭当前窗口
窗格管理
prefix % 水平方向创建窗格
prefix " 垂直方向创建窗格
prefix Up|Down|Left|Right 根据箭头方向切换窗格
Ctrl+b,并且不要松开Ctrl,通过方向键调整窗格大小,多次点按方向键进行微调
prefix q 显示窗格编号
prefix o 顺时针切换窗格
prefix } 与下一个窗格交换位置
prefix { 与上一个窗格交换位置
prefix x 关闭当前窗格
prefix space 重新排列当前窗口下的所有窗格
prefix ! 将当前窗格置于新窗口
prefix Ctrl+o 逆时针旋转当前窗口的窗格
prefix t 在当前窗格显示时间
prefix z 放大当前窗格(再次按下将还原)
prefix i 显示当前窗格信息

自定义tmux按键配置如下
$ more ~/.tmux.conf
# Prefix Ctrl-a
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Mouse mode, need tmux version > 2.1
set -g mouse on
# Shift-arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# Alt-arrow to switch pane
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Set split window keys
bind-key | split-window -h
bind-key - split-window -v
# Config reload
bind-key r source-file ~/.tmux.conf \; display-message "Reloaded Configure!"
# 窗口编号从1开始计数
set -g base-index 1
# 窗格编号从1开始计数
set -g pane-base-index 1
# 进入复制模式的时候使用vi键位(默认是EMACS)
setw -g mode-keys vi
# PREFIX-Q 窗格编号的显示时长,单位ms
set -g display-panes-time 1000
# 关掉某个窗口后,编号重排
set -g renumber-windows on
# 禁止活动进程修改窗口名
setw -g allow-rename off
# 禁止自动命名新窗口
setw -g automatic-rename off
# 当非活动窗口内容改变时发出提示
setw -g monitor-activity on
set -g visual-activity on

# 退出所有终端,然后重新登录即可生效
$ tmux kill-server
$ tmux

注意

补充

Tmux (Terminal Multiplexer的简称), 是一款优秀的终端复用软件,类似GNU screen,但比screen更出色.tmux来自于OpenBSD,采用BSD授权.
tmux的结构包括会话(session)、窗口(window)、窗格(pane)三部分
功能:可以实现分屏,分窗口同时操作;可以后台挂起任务,关闭终端,进程依然存在;可以同时多个终端共享会话,同时查看,类似于屏幕共享.
https://github.com/tmux/tmux/wiki/Getting-Started 下载源码
http://galaxy4.net/repo/RHEL/7/x86_64/ 下载rpm包
https://zhuanlan.zhihu.com/p/166254575

示例