tmux 是一个终端复用器类自由软件,功能相似 GNU Screen,但使用 BSD 许可发布。用户能够经过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时很是方便。 --- 维基百科java
tmux 的三个重要概念:会话(session),窗口(window),窗格(pane)。nginx
一个会话(session) 能够有多个窗口(window),一个窗口(window)又能够有多个窗格(pane)。centos
# macOS $ brew install tmux # centos $ yum install tmux
tmux 的快捷键都要经过前缀键才能够使用。默认的前缀键是Ctrl+b
,即先按下Ctrl+b
进入快捷键模式,再按快捷键才会生效。bash
举例:分离会话的快捷键是Ctrl+b d
。用法是,在 tmux 窗口下,先按下Ctrl+b
,再按下d
,就会分离会话,进入正常命令行模式。服务器
tmux
:建立一个无名称的会话tmux new -s daodaotest
:建立名为 daodaotest 的会话tmux new -s daodaotest -d
:在后台建立名为 daodaotest 的会话tmux detach
:分离会话tmux ls
:显示会话列表tmux a
:接入最后一次会话tmux a -t daodaotest
:接入 daodaotest 会话tmux kill-session
:关闭最后一次会话tmux kill-session -t 0
:使用会话编号杀死会话tmux kill-session -t daodaotest
:使用会话名称杀死会话tmux kill-session -a -t daodaotest
:关闭除 daodaotest 外的全部会话tmux kill-server
:关闭全部会话tmux switch -t 0
:使用会话编号切换会话tmux switch -t daodaotest
:使用会话名称切换会话tmux rename-session -t daodaotest daodaotest2
:重命名会话名称exit
或 Ctrl+d
:退出会话会话快捷键session
Ctrl+b s
:列出会话,可进行切换Ctrl+b d
:分离当前会话Ctrl+b $
:重命名当前会话tmux new-window
:新建一个新窗口tmux new-window -n daodaotest
:新建一个 daodaotest 名称的新窗口tmux select-window -t 0~9
:切换到指定编号的窗口tmux select-window -t daodaotest
:切换到 daodaotest 的窗口tmux rename-window daodaotest2
:重命名当前窗口为:daodaotest2窗口快捷键maven
Ctrl+b c
:新建一个新窗口Ctrl+b ,
:重命名当前窗口Ctrl+b w
:列出全部窗口,可进行切换Ctrl+b n
:进入下一个窗口Ctrl+b p
:进入上一个窗口Ctrl+b l
:进入以前操做的窗口Ctrl+b 0~9
:选择编号0~9对应的窗口Ctrl+b .
:修改当前窗口索引编号Ctrl+b '
:切换至指定编号(可大于9)的窗口Ctrl+b f
:根据显示的内容搜索窗格Ctrl+b &
:关闭当前窗口tmux sp -h
:水平方向建立窗格tmux sp
:垂直方向建立窗格tmux select-pane -U
:光标切换到上方窗格tmux select-pane -D
:光标切换到下方窗格tmux select-pane -L
:光标切换到左边窗格tmux select-pane -R
:光标切换到右边窗格tmux swap-pane -U
:当前窗格上移tmux swap-pane -D
:当前窗格下移窗格快捷键spa
Ctrl+b %
:水平方向建立窗格Ctrl+b "
:垂直方向建立窗格Ctrl+b Up|Down|Left|Right
:根据箭头方向切换窗格Ctrl+b q
:显示窗格编号Ctrl+b o
:顺时针切换窗格Ctrl+b }
:与下一个窗格交换位置Ctrl+b {
:与上一个窗格交换位置Ctrl+b x
:关闭当前窗格Ctrl+b space(空格键)
:从新排列当前窗口下的全部窗格Ctrl+b !
:将当前窗格置于新窗口Ctrl+b Ctrl+o
:逆时针旋转当前窗口的窗格Ctrl+b t
:在当前窗格显示时间Ctrl+b z
:放大当前窗格(再次按下将还原)Ctrl+b i
:显示当前窗格信息在作自动化部署脚本时,远程执行目标服务器 xStart.sh
脚本,来后台启动 java 应用。脚本以下:命令行
# 启动应用 start() { ...... if [ "X$pid" = "X" ]; then # 关闭以前终端 tmux kill-session -t $SYSTEM_NAME-$PORT # 建立终端 tmux new -s $SYSTEM_NAME-$PORT -d # 终端启动服务 tmux send -t $SYSTEM_NAME-$PORT "cd $PIDDIR;nohup java $JAVA_OPTS -jar $SYSTEM_NAME*.jar $SPRING_ACTIVE --server.port=$PORT $EXT_OPTS >/dev/null 2>&1 &" ENTER else echo "$SYSTEM_NAME is already running." exit 1 fi ...... }
在迁移 maven 私服 nexus 时,nexus 数据大概有 13G 左右,在使用scp
进行迁移,终端超时关闭后就会中断。操做命令以下:日志
# 建立 tmux 会话 $ tmux new -s nexus-scp # 在 tmxu 会话中,执行 scp 命令 $ scp -R nexus@x.x.x.x:~/nexus . # 分离会话,后台执行便可 $ Ctrl+b d
平常工做中,天天都要查询某些日志或者监控某些指标时,能够经过tmux
保存现场,下次快速恢复工做现场,提升工做效率。
nginx 操做现场