Tmux简单使用
为什么要用Tmux
有时候需要SSH或者telent远程登录到Linux服务器上执行一个长时间运行的命令,但是网络断开或者窗口关闭都会导致任务的退出了
这是因为我们打开一个终端程序(xshell/CRT/Item2),连接本机或者远程就创建一个会话
典型的场景就是:有时候需要SSH或者telent远程登录到Linux服务器上执行一个长时间运行的命令,但是网络断开或者窗口关闭都会导致任务的退出了
我们执行的命令就是在这个会话内执行的,当我们退出终端或者网络断开后,就会给会话发送中断的指令,又因为我们运行的命令是通过这个会话创建的,退出指令会传递给我们会话创建的进程
我们常见的操作使用nohub,nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号或者使用更方便功能更强大的tmux
Tmux作用
- 它允许在单个窗口中,同时访问多个会话。这对于同时干多件事有很大用处
- 可以在不同的窗口中,访问已存在的会话。并可以进行实时共享会话
- 它不会随着窗口关闭或者Session端口而关闭会话统一由Tmux维护
Tmux安装
# CentOS yum install tmux # Mac brew install tmux
Tmux常用命令
查看有那些tmux会话: [tmux ls]
tmux ls # or tmux list-session
栗子:
[@js_27_144 ~]# tmux ls rsync_big_file: 1 windows (created Wed Jan 15 17:04:41 2020) [114x58] [@js_27_144 ~]#
创建新tmux会话
# 默认(使用的是tmux默认的id不容易识别到底是干什么的) tmux new # 使用-s参数指定名称 tmux new -s rsync_file
进入存在的tmux会话:[tmux at -t session-name]
# 使用会话id tmux attach -t 0 # 使用会话名称 tmux attach -t <session-name>
栗子
[@js_27_144 ~]# tmux ls 1: 1 windows (created Wed Jan 15 17:08:30 2020) [114x58] rsync_big_file: 1 windows (created Wed Jan 15 17:04:41 2020) [114x58] [@js_27_144 ~]# [@js_27_144 ~]# tmux at -t rsync_big_file
挂起tmux会话,退出tmux并且tmux会话保持后台运行
# 调出命令行输入
detach
# 或者使用快捷键
ctrl+b d
杀死tmux会话
# 使用会话编号 tmux kill-session -t 0 # 使用会话名称 tmux kill-session -t <session-name>
会话快捷键
[ctrl+b d] 挂起会话保持后台运行:按住ctrl不放同时按b,所有按键松开在按d
[ctrl+b s] 在tmux窗口列出当前tmux会话:按住ctrl不放同时按b,所有按键松开在按s,然后就可以按上下键切换会话,回车进入,按:q退出选择界面
[ctrl+b $] 在tmux窗口重命名当前会话按住ctrl不放同时按b,所有按键松开在按$
[ctrl+b 0] 在tmux窗口切换会话:按住ctrl不放同时按b,所有按键松开在按0是选择id为0个session会话,ctrl+b 1 是选择id为1的会话
[ctrl+b :]在tmux窗口调出命令行:按住ctrl不放同时按b,所有按键松开在按:(冒号)
[ctrl+b ?]在tmux窗口调出帮助菜单里面有各种快捷键提示:按住ctrl不放同时按b,所有按键松开在按?(问好)
tmux问题
1 默认不能滚动窗口上下翻看历史输出的内容
启用滚轮查看日志
# 允许使用鼠标控制,选中复制(想翻看记录直接调出命令行接口然后输入就行,或者直接写到配置文件 ~/.tmux.conf) setw -g mode-mouse on # 如果只想通过鼠标选中复制内容或者翻看历史屏幕输入或输出内容,启用上面一条就可以了,下面的东西我个人感觉属于锦上添花有没有都行 # 允许鼠标选择窗口(在多窗口下使用更好) set -g mouse-select-pane on # 允许鼠标调整窗口的大小(多窗口下可以使用鼠标调整窗口大小) set -g mouse-resize-pane on # 允许鼠标选择tmux打开的session列表可以替代ctrl+b 0 / ctrl+b 1 set -g mouse-select-window on