Unix command > screen
更新日
2012-11-22
広告
screenは、シェル環境をラップするソフトウェアです。screenを使うと、リモートログインした状態を擬似的に保持することができます。
よくあるユースケース
- sshなどで、サーバにリモートログイン
- screenを実行
- 時間がかかる処理を実行
- screenをデタッチ(detach)
- サーバからログアウト(今日はもう家に帰らないと!)
- 次の日、再びサーバにリモートログイン
- screenにアタッチ(attach)
- 処理の状況を確認可能!
実行
'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 まで。