回答:
はい、コンピューターを再起動すると、セッションが失われます。セッションを保存できません。ただし、スクリプトは作成できます。実際に最も行うのは、いくつかのセッションをスクリプト化して、それらを再作成できるようにすることです。たとえば、セッションを作成する簡単なシェルスクリプトを次に示します。
#!/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を使用して、その名前(この場合、非常に元の名前は「スクリプト」)を持つセッションがあるかどうかを確認します。戻りコードをチェックします。その名前のセッションが既に進行中の場合、「if」サイクルをスキップして、最後の行に直接進み、セッションにアタッチします。それ以外の場合は、セッションを作成し、いくつかのキーを送信します(とりあえずランダムスクリプトを実行します)。次に、「if」ブロックを終了してアタッチします。
これは非常に簡単なサンプルです。添付する前に、複数のウィンドウ、ペインなどを作成できます。
ただし、これはあなたが要求したものとまったく同じではありません。セッションに変更を加えた場合、たとえば、ウィンドウの名前を変更してその中に新しいペインを作成した場合、再起動するとそれらの変更はもちろん保存されません。
スクリプトセッションのプロセスを容易にするツールがいくつかありますが、私は手動で行うことを好みます(より汎用性が高いと思います)。これらのツールはTmuxinatorとTeamocilです。
私の主な情報源は「The Pragmatic Bookshelf」Tmux本でした。
tmux send-keys ...
ラインの目的は何ですか?
some command; if [ $? != 0 ]; then .....
は、次のように記述(および読み取り)するのがより簡単ですif ! some command; then .....
。
開いているtmuxセッション、ウィンドウ、およびそれぞれの現在の作業ディレクトリを保持する単純なbashスクリプトを作成しました。
手動または定期的に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セッションとしてインスタンス化できます。
セッションの再作成にhttps://github.com/jimeh/tmuxifierを使用しました。これは、gitを使用するだけでrubyなしでインストールできます。
サンプルは自明です。例:https : //github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh