GNU screenは何と言っても一度ターミナルを落としたりsshが切れたりしても 再度ログインした時に同じ状態に戻せるのが便利なところですが、 たまにちょっとした作業をして残っているセッションがあるにも関わらず 新たにセッションを立ち上げてしまうことがあります。
そんな二重起動を防ぐスクリプトについて。
GNU screenの二重起動防止スクリプト
以下の様なスクリプトを.bashrc等の設定スクリプトの中でsource
するなり
直接設定スクリプトの中に書くなりします。
screen
と言うラッパー関数を作って本来のscreen
コマンドの代わりに
これが呼ばれる様になります。
セッションが一つだけ存在する場合は
$ screen -d -r
します。現在Attachされていても他のターミナルでのセッションを落として 新たに繋げる様に。
もし2つ以上のセッションが存在する場合は存在するなかから 選択して繋げる様にします。
sentakuがインストールされていればsentaku
で、
なければ適当なプロンプト選択画面を出して選択出来る様にしています。
pecoとかを使っているなら
コマンドチェック部のtype -a sentaku
をtype -a peco
にして
sentaku -s $'\n'
の所をpeco
にしてあげればOK。
何らかの引数を与えた時にはこれらの動作は無しにして本来のscreen
に直接
引数を渡して起動する様にもしています。
すでにセッションがある時にも新たにセッションを作りたいときも当然あるので、
その様な時は-n
を渡すと直接screen
コマンドを打って新しいセッションが
始められる様にしてあります。
(GNU screenでは-n
は今のところ使われていないのでこれにしています。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|