byobuで再起動時にセッションを保存、復元する
ターミナルマルチプレクサの一つであるbyobu
コマンドで、マシンを再起動したり、シャットダウンしてしまってもすぐに元の状態に戻したいという話。
ターミナルマルチプレクサの欠点
ターミナルマルチプレクサ系の欠点というと、セッションが保存できないことである。
自分はLinuxのサーバでbyobu
コマンドを使っているので、手元のノートPCからssh
した先で端末を開いている。
なので、ノートPCをシャットダウンしたり、再起動してもすぐに直前の作業の続きから始めることができる。
Linuxサーバは常時電源を入れっぱなしの状態でほとんど再起動することがない。
が、たまにパッケージの更新だったり、バージョンアップとかでマシンの電源を落とすことがある。
こういうとき、「直前の作業画面の復元」から始まることになって、時間を使ってしまう。
パッケージの更新とかはバグ修正とか新機能の追加なんかが入ることもあってできる限り頻繁にやっておきたいけれど、「直前の作業画面の復元」は面倒なのでやりたくない。
「直前の作業画面の復元」をしなくて済むように、再起動時にセッションを保存、復元できるようにする。
byobuとは
byobu
とは、ターミナルマルチプレクサとして使われるコマンドの一つ。
ターミナルマルチプレクサとして有名なtmux
、screen
のラッパーコマンドでしかないのだけれども、設定ファイルとかを書かなくてもよく、インタラクティブに設定することができるので扱いやすい。
今回はtmux
を内部的に呼び出している場合(byobu
だと、tmux
とscreen
どちらを内部的に呼び出すのか選択できる)の設定方法を書いている。
tmux
におけるtpm(tmux plugin manager)を使ったセッションの保存、復元
実はbyobu
自体の機能を使っているのではなく、tmux
でできる機能を使ってセッションを保存している。
なので、まずはtmux
でセッションの保存と復元を行うための大まかな流れを調べてみた。
tpm
(tmux plugin manager)をインストールする.tmux.conf
に初期設定を書く- 設定を読み込ませる
.tmux.conf
にプラグインの設定を書き込む- 設定を読み込ませる
- プラグインのインストール
tpm
(tmux plugin manager)というものを使うらしい。
細かい作業内容は以下に書いている。
byobu
でも内部的にはtmux
を使っているので、うまくやれば同じことができそうではある。
byobu
での作業
tmux
の作業に沿って、同じことをbyobu
でもやっていく。
tpm
(tmux plugin manager)をインストールする
まずはtpm
を落としてくる。
デフォルトならこれで良いらしい。
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
自分はGitリポジトリをまとめておいておきたいので以下のようにした。
$ cd ~/repo # Gitリポジトリをまとめておいているところ $ git clone https://github.com/tmux-plugins/tpm $ mkdir -p ~/.tmux/plugins $ ln -s tpm ~/.tmux/plugins/tpm # シンボリックリンクを張っている
.tmux.conf
に初期設定を書く
byobu
の場合、.tmux.conf
は~/.byobu/.tmux.conf
にある。
なので、ここに設定を書き込む。
tpm
のリポジトリにあるように、とりあえず以下の内容を書き込めばOK。
# 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'
設定を読み込ませる
あとは設定を読み込ませる。
しかし、byobu
だとひと手間必要みたい。
本来、~/.tmux.conf
にあるはずの設定ファイルがないために、インストールがうまく行かない。
結論としては、シンボリックリンクを張ってしまえばいいみたい。
$ ln -s ~/.byobu/.tmux.conf ~/.tmux.conf
あとはtpm
同様に、byobu
を開いた状態で以下のコマンドを打ち込めばOK。
# type this in terminal if tmux is already running $ byobu source ~/.byobu/.tmux.conf # tmux でも byobu でも同じコマンドでいいっぽい
ひとまず、byobu
を起動した状態で、Byobu Prefix
+I
を押して、インストールを待つ。
インストールが上手く行っていると、以下の場所にtmux-sensible
(設定ファイルに書いているプラグインの一つ)ディレクトリができているはず。
$ ls ~/.tmux/plugins/ tmux-sensible tpm
.tmux.conf
にプラグインの設定を書き込む
残りは、tmux
とほぼ同様の手順。
以下の記事とかを参考にした。
.tmux.conf
を編集して、以下のように書き換える。
# 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' # Plugins set -g @plugin 'tmux-plugins/tmux-continuum' set -g @plugin 'tmux-plugins/tmux-resurrect' # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run -b '~/.tmux/plugins/tpm/tpm'
設定を読み込ませる
先ほどと同じように、以下のコマンドで設定ファイルを読み込ませる。
$ byobu source ~/.byobu/.tmux.conf # tmux でも byobu でも同じコマンドでいいっぽい
プラグインのインストール
こちらも、書き換えた後にはbyobu
を起動した状態で、Byobu Prefix
+I
を押して、インストールを待つ。
セッション保存、復元の設定とその読み込み
これで、byobu
は15分おきに勝手にセッションの状態を保存してくれるようになる。
また、手動で保存するときにはByobu Prefix
+Ctrl-s
、復元はByobu Prefix
+Ctrl-r
でうまくできる。
コマンドの状態とかも普通に復元できててすごい。
その他
起動時に自動でセッション復元とかもできるみたいだけれども、byobu
ではなくてtmux
が起動してしまっててうまくbyobu
が起動できなかった。
なので、とりあえずで手動で復元するようにしている。