Screenを使う その3: セッション管理 (2)

detach/resume

(2)でお見せした通り、 Screenは端末から切断(detached)された状態でも中で動いてるアプリケーションは 止まらずに動いています。たとえば...

なんていう不慮の事故でscreenのセッションが落ちてしまっても、 また端末を立ち上げなおしてscreen -rとすれば、先程まで動いていた screenのセッションに再接続できます。

また、

などとすると、人為的にdetach状態にさせることができます。この detach状態とresumeを使うことで、screenが動いている端末を 「乗り換える」ことができます。

例1。

回線切っちゃえば勝手にdetachedになるので放っておくという手もあるし、 いきなり切られても安心。

また、普段の作業環境(emacsとかそこで動くメーラとか)も 動かしっぱなしにしておくと、出先でメールチェックするために 大学のマシンにloginしてscreen -rとするだけでOk。 emacsやメーラが起動するのを待つ必要はないし、回線スピードを 気にする必要もなく経済的でせう。

例2。

これでセッションの「横取り」ができます。 screen -d -r とすることで下の2つの作業を1回でおこなう ことができます。

私は仕事中はWindowsマシンを使っていますが、隣に ノートがあって、普段はTeraTerm内でscreen使っています。 このドキュメントもそうやって書いていたり。

multiモード

比較的最近ついた機能にmultiモードがあります。これはもう 強烈に便利です。

たとえば↑の例1。学校から帰る前にdetachし忘れていたら いちいちscreen -d -rしてセッションを奪わなきゃいけません。 例2。家に帰ったときはノートの方でいちいちscreen -rして 復活させなくてはいけません。

multiを使えばそんな気遣いは無用になります。

準備

multiを使うには「multiuser on」コマンドを発行する必要があります。 常用するなら.screenrcに書いておきましょう。

また、どのユーザとセッションを共有するかという設定も必要です。 そのためには、acl??? コマンドを使います。 きめ細かい制御ができますので詳しくはinfoを見てください(Screen→Session Management→Multiuser Session)。 自分だけがアクセスできるようにする場合は、 「acladd 自分のユーザ名」でとりあえずOkでしょう。

使う

これらの準備を済ませるとmultiモードが使えるようになります。 起動は今までと一緒です。端末をひとつ用意して

端末A% screen
で起動します。

screenが起動したら、別の端末を用意して

端末B% screen -x
とします。そして端末Bに何か文字を入力すると...端末Aの方にも 同じ文字が出ているはずです。もちろん逆も同様。

このようにmultiモードでは複数の端末で同じセッションを同時に いじることができるわけです。以前のバージョン(3.8くらい)までは、 同時に同じWindowをいじることはできませんでしたが(ロックされてしまう、 別のWindowはOk)、最近のバージョンでは本当に同時にいじることができます。

複数の端末から同じ画面をいじれて、回線切れても保存されている、というと vncが感覚的に近いと思います。モデムでも充分な速度で使えますので なるべくscreenの中で多くのアプリケーションが動いていた方が、 きっと幸せであるという主張を 今ならきっと理解していただけるのではないかと 当方確信しておるわけですが...


戻る
Zinnia (zinnia@risky-safety.org)
このWebコンテンツ(ここから辿れるもの)に対する コメントのメールは許可なく公開することがあります。