[情報処理][UNIX] UNIX屋の道具箱

A君:「あの、TeraTermで作業していたら途中でPCが落ちてしまったんですけど...」「家帰ってから作業したいんですが、VPNが不安定で...」
(ここでドラえもんのSE)
GNU screen(以下screen)は仮想端末制御ソフトウェアである。screenを使うと、以下のような問題を解決できる。

  • 作業中に端末が落ちて台無し
  • 通信が不安定で、重要なタスクをリモート実行できない
  • コマンドラインでプログラム動かして帰りたいんだけど端末のPCは持って帰りたい

起動方法
% screen -S セッション名
これで任意のセッション名がついた仮想端末が生成される。通常、シェルがターミナルから切り離されると、そのシェルは終了してしまうが、screenセッション内部のシェルは、ターミナルとの通信が切断されても維持される。このため通信異常などにより端末が切断されても、ログインしなおせばセッションに復帰できる。

screenセッションの中では以下のようなエスケープシーケンスが使用できる。

  • C-a d : セッションのデタッチ(親シェルに戻る)
  • C-a c : 新しいwindowの生成
  • C-a n : screenセッション内の、次のwindowへの切り替え

実行中のscreenセッションのリストは次のコマンドで表示できる。
% screen -ls

任意のscreenセッションへのResumeは次のコマンドを使用する。
% screen -d -r セッション名

詳しくはmanページを参照のこと。