2012-06-21 04:17:49 +0000 2012-06-21 04:17:49 +0000
277
277

再起動後のtmuxセッションの復元

tmuxのセッションを保存する方法はありますか?言い換えれば、コンピュータを再起動すると、常にセッションが失われてしまうのでしょうか?

回答 (5)

176
176
176
2012-06-22 08:58:34 +0000

はい、コンピュータを再起動するとセッションが失われます。セッションは保存できません。しかし、スクリプト化することはできます。実際には、いくつかのセッションをスクリプト化して、再作成できるようにすることがほとんどです。例えば、セッションを作成するための簡単なシェルスクリプトを以下に示します:

#!/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の本でした。

122
122
122
2013-07-04 22:37:01 +0000

(https://github.com/mislav/dotfiles/blob/d2af5900fce38238d1202aa43e7332b20add6205/bin/tmux-session) は、開いている tmux セッション、ウィンドウ、カレントワーキングディレクトリをそれぞれに永続化します。

tmux-session save

~/.tmux-sessionに書き込みます。再起動後、以下のようにリストアしてください。

tmux-session restore

数百行のPerlスクリプトよりもずっと良いと思います。

10
10
10
2014-06-26 17:40:29 +0000

tmuxinator は Ruby で書かれたツールで、簡単に tmux セッションを作成して管理することができます。プロジェクトを作成して、それをtmuxセッションとしてインスタンス化することができます。

5
5
5
2013-02-02 21:54:54 +0000

この部分的な解決策を考えてみましょう ここ

作者は、サーバー再起動後のtmuxセッションの状態を保持するために、tmuxセッションの履歴を保存する関数を作成しました。

1
1
1
2019-05-03 08:24:08 +0000

セッションの再作成には https://github.com/jimeh/tmuxifier を使うことに成功しました。これはrubyを使わずにgitを使うだけでインストールできます。

サンプルを見れば一目瞭然です。 https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh