Tmuxセッションを保存する方法はありますか?つまり、コンピュータを再起動した場合、常にセッションが失われることになりますか?
はい、コンピュータを再起動するとセッションが失われます。セッションを保存できません。しかし、それらはスクリプト化することができます。実際にほとんどの作業は、セッションを再作成できるようにいくつかのセッションをスクリプトすることです。たとえば、セッションを作成するための簡単なシェルスクリプトは次のとおりです。
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [ $? != 0 ]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
これが何をするかです。まず、tmux has-sessionを使用して、その名前のセッション(この場合、元の名前は "script")が既に存在するかどうかを確認します。戻りコードを確認します。その名前のセッションが進行中の場合は、「if」サイクルをスキップして最後の行に直接進み、そこでセッションに接続します。それ以外の場合は、セッションを作成していくつかのキーを送信します(今のところランダムスクリプトを実行するだけです)。それから "if"ブロックを抜けてアタッチします。
これはとても簡単なサンプルです。添付する前に、複数のウィンドウ、ペインなどを作成できます。
ただし、これはあなたが要求したものとまったく同じではありません。たとえばセッションに変更を加えた場合は、ウィンドウの名前を変更してその中に新しいペインを作成します。再起動した場合、その変更はもちろん保存されません。
手動でスクリプトを作成する方が好きですが、スクリプトセッションのプロセスを簡単にするツールがいくつかあります(より汎用的であると思います)。それらのツールは Tmuxinator と Teamocil です。
私の主な情報源は "The Pragmatic Bookshelf" Tmux bookでした。
私は単純なbashスクリプト を書きました。これは開いているtmuxセッション、ウィンドウ、現在の作業ディレクトリをそれぞれ永続化します。
手動でまたは定期的にcronから呼び出します(忘れてしまうかもしれません)。
tmux-session save
~/.tmux-session
に書き込みます。再起動後に復元します。
tmux-session restore
私はこれを数百行のPerlスクリプトよりはるかに良いと思います。
私はあなたが完全なtmux環境を保存して後でそれを復元することを可能にするtmuxプラグインを書きました。 tmuxを絶対に終了しないようにするために、本当に詳細になるようにします。
https://github.com/tmux-plugins/tmux-resurrect
更新日:tmux環境の自動バックグラウンド保存を実行する tmux-continuum プラグインが追加されました。オプションで、コンピュータの再起動後に自動的にtmux envを*自動的*に復元します。
tmuxinator はRubyで書かれたツールで、tmuxセッションを簡単に作成し管理するために使用できます。それは後でtmuxセッションとしてインスタンス化することができるプロジェクトを作成するために使用することができます。
ここで見つけた この部分解を考えてみてください
作成者は、サーバの再起動後にtmuxセッションの状態を保持するために、tmuxセッションの履歴を保存する関数を作成します。
セッションの再作成に https://github.com/jimeh/tmuxifier を使用しました。これはRubyなしでインストールすることができます。ただgitを使うだけです。
サンプルはかなり自明です、例: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh