「tmux」虚拟终端
当使用ssh 连接一台远程计算机的时候,如果此时正在执行一个进程,突然断网了,那么这个进程也会被迫中断了。当重新ssh连接到这台远程计算机的时候,已经找不到之前正在执行的进程了。因为上一次连接的会话(Session)已经终止, 这次的重新连接又新建了一个会话。如果你遇到过这种问题你就会发现: 会话和进程是绑定的,会话终止,当前正在执行的进程也会终止。
为了解决上述问题,你可以尝试使用下Tmux。
安装及基本使用
1# 安装在需要远程连接的远程服务器上
2apt install tmux
1# 新建
2tmux new -s <session name>
3
4# 切换到某个session
5tmux attach -t <session name>
6
7# 退出某个session,依旧保留进程
8tmux detach
9
10# 分隔窗口
11tmux split-window
12tmux split-window -h # 水平分隔
13
14# 切换窗口 【Ctrl】+【b】 然后按下 【;】
快捷键
前缀键 【Ctrl】+【b】。先按下前缀键后,在使用功能键。
copy-mode use vi shortcuts
1cat <<EOF | tee -a ~/.tmux.conf
2setw -g mode-keys vi
3set -g @plugin 'tmux-plugins/tpm'
4set -g @plugin 'tmux-plugins/tmux-sensible'
5set -g @plugin 'tmux-plugins/tmux-resurrect'
6
7run '~/.tmux/plugins/tpm/tpm'
8EOF
插件管理
Tmux Plugin Manager
Tmux需要安装插件可以通过Tmux Plugin Manager 这个插件进行安装, 这个插件相当于一个插件管理系统。
1git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
2
3
4# vi .tmux.conf
5# List of plugins
6set -g @plugin 'tmux-plugins/tpm'
7set -g @plugin 'tmux-plugins/tmux-sensible'
8
9# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
10run '~/.tmux/plugins/tpm/tpm'
11
12
13# 重新加载配置文件
14 # type this in terminal if tmux is already running
15 tmux source ~/.tmux.conf
然后就可以在Tmux中使用prefix+I(大写I)安装配置文件.tmux.conf
中定义的插件了。
Tmux Resurrect
当我们重启系统后Tmux的session会被清除,导致每次重启之后都要重建一堆session并且重建Pane。
Tmux Resurrect
插件可以解决这个问题,保存和恢复Tmux Session
1# 1st, add config
2set -g @plugin 'tmux-plugins/tmux-resurrect'
3# 2nd, instlal
4prefix +I
重启电脑之前先执行,保存 session : prefix + Ctrl-s
重启之后,首先打开 tmux 然后 Restore Session: prefix + Ctrl-r
如果有多个session可以使用prefix +s 选择 session。