POSTS
Linux、mac系统下tmux终端复用软件的使用
Tmux相关概念:
tmux采用C/S模型构建,输入tmux命令就相当于开启了一个服务器,此时默认将新建一个会话,然后会话中默认新建一个窗口,窗口中默认新建一个面板。会话、窗口、面板之间的联系如下:
1.一个tmux session(会话)可以包含多个window(窗口),窗口默认充满会话界面,因此这些窗口中可以运行相关性不大的任务。
2.一个window又可以包含多个pane(面板),窗口下的面板,都处于同一界面下,这些面板适合运行相关性高的任务,以便同时观察到它们的运行情况。
1.新建会话
tmux # 新建一个无名称的会话
tmux new -s demo # 新建一个名称为demo的会话
2.断开当前会话
tmux detach # 断开当前会话,会话在后台运行
使用快捷键组合Ctrl+b+d
应该是ctrl+b松开后再按其他键。例如ctrl+b d,应该先同时按ctrl+b 松开后,再按 d
3.进入会话
tmux attach-session -t session-name,可简写为 tmux a -t session-name
tmux a # 默认进入第一个会话
tmux a -t demo # 进入到名称为demo的会话
4.关闭会话
我们可以使用tmux的kill命令,kill命令有kill-pane、kill-server、kill-session 和 kill-window共四种,其中kill-session的语法为tmux kill-session -t session-name。
tmux kill-session -t demo # 关闭demo会话
tmux kill-server # 关闭服务器,所有的会话都将关闭
5.查看所有会话
tmux list-session # 查看所有会话
tmux ls # 查看所有会话,提倡使用简写形式
6.当前正处于一个会话中,可以用Ctrl+b + s查看所有会话,并根据上下左右键选择进入某个会话或者窗口。
7.tmux所有快捷键的前缀都默认为Ctrl+b
1.系统指令:
Ctrl+b+d 断开当前会话
Ctrl+b+s 显示会话列表用于选择并切换
Ctrl+b+[ 进入复制模式,按q退出
Ctrl+b+] 粘贴复制模式中复制的文本
2.窗口(window)指令
Ctrl+b+c 新建窗口
Ctrl+b+0~9 切换到指定窗口
Ctrl+b+p 切换到上一窗口
Ctrl+b+n 切换到下一窗口
Ctrl+b+w 打开窗口列表,用于且切换窗口,处于Ctrl+b+s界面的下一级
3.面板(pane)指令
Ctrl+b+" 当前面板上下一分为二,下侧新建面板
Ctrl+b+% 当前面板左右一分为二,右侧新建面板
Ctrl+b+; 切换到最后一次使用的面板
Ctrl+b+q 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板
Ctrl+b+{ 向前置换当前面板
Ctrl+b+} 向后置换当前面板
Ctrl+b+x 退出当前面板
8.处于当前会话、窗口、面板时,退出或者关闭当前 会话、窗口、面板,可以使用exit命令来退出。
9.脚本化的tmux(重点)
脚本中创建tmux会话时,由于不需要开启可视化界面,需要输入-d参数指定会话后台运行,如下:
tmux new -s init -d # 后台创建一个名称为init的会话
新建的会话,建议重命令会话的窗口名称,以便后续维护。
# 重命名init会话的第一个窗口名称为service
tmux rename-window -t "init:0" service
现在,可以在刚才的窗口中输入指令了。
# 切换到指定目录并运行python服务
tmux send -t "init:service" "cd ~/workspace/language/python/;python2.7 server.py" Enter
一个面板占用一个窗口可能太浪费了,我们来分个屏吧。
# 默认上下分屏
tmux split-window -t "init:service"
# 切换到指定目录并运行node服务
tmux send -t "init:service" 'cd ~/data/louiszhai/node-webserver/;npm start' Enter
创建一个新的窗口来运行更多的程序。
# 新建一个名称为tool的窗口
tmux neww -a -n tool -t init # neww等同于new window
# 运行weinre调试工具
tmux send -t "init:tool" "weinre --httpPort 8881 --boundHost -all-" Enter
新的窗口,我们尝试下水平分屏。
# 水平分屏
tmux split-window -h -t "init:tool"
# 切换到指定目录并启用aria2 web管理后台
tmux send -t "init:tool" "cd ~/data/tools/AriaNg/dist/;python -m SimpleHTTPServer 10108" Enter