Unix command > screen

更新日 2012-11-22
広告
screenは、シェル環境をラップするソフトウェアです。screenを使うと、リモートログインした状態を擬似的に保持することができます。

よくあるユースケース

  1. sshなどで、サーバにリモートログイン
  2. screenを実行
  3. 時間がかかる処理を実行
  4. screenをデタッチ(detach)
  5. サーバからログアウト(今日はもう家に帰らないと!)
  6. 次の日、再びサーバにリモートログイン
  7. screenにアタッチ(attach)
  8. 処理の状況を確認可能!
screenは、シェルの状態を保持してくれます。そのため、screen上で実行したプログラムは、サーバからログアウトしても停止しません。サーバ上のscreenが、状態を保持してくれるからです。後でscreenに接続(アタッチ)すれば、プログラムの進行状況を確認できます。

実行

'screen'と打てばよいです。以降、detachもしくは終了するまで、screen上で処理することになります。
$ screen

デタッチ(detach)

screenから抜けて、元のシェルに戻ることをデタッチと言います。デタッチするには、'コントロール(Ctrl)+A'を押した後、'd'を押します。
[detached from 13913.pts-1.pc]
デタッチすると、元のシェルに戻り、上のようなメッセージが表示されます。 デタッチする前に実行していたプログラムは、実行され続けているので、安心してください。

screenプロセスの一覧表示

マシン上で動作しているscreenプロセスを一覧表示するには、以下のようにします。
$ screen -ls
There is a screen on:
	13913.pts-1.pc	(2012年09月11日 23時46分25秒)	(Detached)
1 Socket in /var/run/screen/S-hoge.
このように、'13913.pts-1.pc'という名前のscreenプロセスがdetachされていることがわかります。

アタッチ(attach)

デタッチしたscreenプロセスに接続することを、アタッチと言います。アタッチすると、そのscreenに戻ることができます。
 screen -r 13913
アタッチするには、-rオプションにscreenプロセスのプロセスIDを渡してやればよいです。プロセスIDは screen -ls などで調べられます。例えば、screen -ls を実行して、'13913.pts-1.pc' と表示された場合、 13913 がプロセスIDです。

終了

'コントロール+D'で、screenを終了できます。
[screen is terminating]
終了すると、元のシェルに戻り、上記のようなメッセージが表示されます。

過去の表示内容

screenは、デフォルトでは、表示内容をあまり記憶しません。 したがって、一度に大量のログなどを出力すると、最初のログが消えてしまいます。 この場合、まず、出力内容の履歴行数を増やす必要があります。 ホームディレクトリ以下に .screenrc というファイルを作成し、以下の一行を書いておきます。
defscrollback 10000
これで1万行まで出力内容を保存します。 screenにアタッチした状態で、"Ctrl + a"に続けて"Ctrl + ["を押すと、カーソールを移動して出力内容をさかのぼれるようになります。
  • j -- 下に一行移動
  • k -- 上に一行移動
  • Ctrl + u -- 上へジャンプ
  • Ctrl + d -- 下へジャンプ
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system