tmux 是一個終端窗口復用工具軟件,借助 tmux 的功能,用戶可在單個終端窗口上實現多窗口,面板的管理功能.筆者有一個對 tmux 基礎功能使用的介紹終端分屏復用工具 tmux 基本操作教程.
tmux 通過會話的概念對用戶的窗口進行管理,會話中保存有用戶使用的窗口,面板等信息.當用戶從當前會話中脫離( detach )的時候,會話並不會結束,而是在后台繼續運行,使得在會話中運行的程序不會受用戶脫離的影響,而當用戶重新接入( attach )同一會話時,當前終端即重新顯示會話中的內容.上述這些功能在使用單一終端登錄的遠端服務器時是很有用的,用戶創建對應的會話后,運行其中的程序不會受用戶網絡鏈接斷開,終端關閉等問題的影響,而是在后台運行的會話中保持運行.(一般 Linux 服務器版本會內置 screen 命令來提供類似功能,screen 命令基本操作教程)
tmux 提供終端復用功能的一個重要基礎在於用戶脫離( detach )會話后,會話會在后台運行,進而用戶的工作環境得以保持.但是當設備重啟/關機時( 這在個人設備上使用時尤其常見 ),tmux 會話也會對應的停止,使得重啟之后需要用戶手動的去重新進行窗口創建,面板划分等操作.
這里主要介紹一個 tmux 的插件 tmux-resurrent 來進行 tmux 會話的保存. tmux-resurrent 可以保存當前會話的窗口,面板划分等信息,還可以配置對某些軟件的狀態進行恢復,從而使得 tmux 可以對會話進行保存,方便在設備重啟后工作環境的恢復.
Tmux Plugin Manager 安裝
tmux 可以使用 Tmux Plugin Manager(TPM) 進行插件的管理.其安裝也很簡單.
1.克隆 TPM 至本地.
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm //克隆 TPM 至本地的 ~/.tmux/plugins/tpm 目錄
2.將以下內容添加到 tmux 的配置文件 ~/.tmux.conf 的尾部.注意最后的 run -b '~/.tmux/plugins/tpm/tpm' 命令需要始終放在該配置文件的最后一行.
# List of plugins set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # Other examples: # set -g @plugin 'github_username/plugin_name' # set -g @plugin 'git@github.com/user/plugin' # set -g @plugin 'git@bitbucket.com/user/plugin' # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run -b '~/.tmux/plugins/tpm/tpm'
3.修改完成配置文件后即完成 TPM 的安裝,此時新打開的 session 即支持 TPM 的功能.對於已經打開的 tmux 會話,可以會話中通過以下命令使得上述修改生效.
tmux source ~/.tmux.conf //在 tmux 會話中輸入命令使得 TPM 配置生效
4.在完成 TPM 的安裝后,可以通過 TPM 提供的功能進行插件的安裝和管理功能.更多可以參考 TPM 的 github.這里介紹下插件安裝的功能.使用 TPM 安裝 tmux 插件主要有兩步.
第一步是在配置文件 ~/.tmux.conf 中加入對應的插件的信息.添加的格式可以參考 tpm 安裝時對應配置信息中注釋的部分的格式.
set -g @plugin 'xxxxx' //在配置文件中添加插件信息,格式可參照 tpm 安裝時的注釋的格式
第二步即在 tmux 會話中執行安裝命令.具體而言是 <prefix> + I( 大寫 i ),在默認情況下,即為 Ctrl + b + I.上述命令會將對應的插件下載到本地( ~/.tmux/plugin 文件夾中 ),進行插件安裝.
<prefix> I //在 tmux 會話中通過命令安裝對應的插件
若要更新對應的插件,使用 <prefix> + u 命令.若要刪除對應的插件,則首先要在配置文件 ~/.tmux.conf 中移除對應的插件的信息.再通過 <prefix> + alt + u 命令卸載該插件.注意卸載插件並不會刪除對應的插件的目錄,用戶需要手動進行刪除.
tmux-resurrent 插件安裝
根據上面介紹的 TPM 安裝插件的步驟進行 tmux-resurrent 插件的安裝.
1.在配置文件 ~/.tmux.conf 中加入 tmux-resurrnet 插件的信息.
set -g @plugin 'tmux-plugins/tmux-resurrect' //配置文件中加入 tmux-resurrent 插件信息
2.在 tmux 會話中執行 TPM 安裝命令,即 <prefix> + I( 大寫 i ).執行命令后可查看目錄 ~/.tmux/plugin/ 下是否存在對應的插件.
<prefix> I //默認情況下為 Ctrl + b + I,進行插件的安裝
3.在插件完成安裝后即可借助 tmux-resurrent 插件進行當前會話的保存.通過 <prefix> + Ctrl + s 保存當前會話.在用戶保存會話關機重啟后,可在新創建的會話中通過 <prefix> + Ctrl + r 命令在 tmux 會話中恢復保存的會話.默認情況下 tmux-resurrent 會保存會話中的窗口狀態,面板划分等等信息,還包括對某些程序的恢復( 可參考頁面 Restoring programs ),更多的 tmux-resurrent 命令的功能可參考其 github. tmux-resurrent 插件保存的會話信息默認存放在目錄 ~/.tmux/resurrent 目錄中.
<prefix> Ctrl s //保存當前會話 <prefix> Ctrl r //加載保存的會話
4.目前實現中, tmux-resurrent 保存的工作環境信息以 txt 文件的形式存放在 ~/.tmux/resurrent 目錄下,該目錄下有一個軟鏈接 last 指向最近一次保存的工作環境 txt 文件.當用戶加載保存的會話時,即恢復的是軟鏈接 last 所指向的保存配置文件.相應的,通過修改 last 軟鏈接的指向即可選擇使用 <prefix> Ctrl r 命令加載某一次的會話保存設置. Linux 環境下對軟鏈接的創建/刪除/修改通過 ln 命令執行.其中 -s 表示使用符號鏈接( symbolic link ).
ln -s link_target link_name //創建軟鏈接 link_name,其指向 link_target rm -rf link_name //刪除名為 link_name 的對象( 注意名字后面不要加 '/' ) ln -snf link_target link_name //修改/創建指向 link_target 的軟鏈接 link_name
在 ~/.tmux/resurrent 目錄下時,使用上述命令修改 last 的指向,進而選擇加載某次保存的會話設置.
ln -snf xxxx last //修改 last 指向的保存文件
