GNU screen の画面分割とかそんなのマルチウィンドウシステムなのにひとつのウィンドウ内でされても見にくいだけなんじゃ…ってことで自分が惹かれたのはアタッチ(attach)・デタッチ(detach)の機能。サーバでの作業を残したままログアウトできるなんてとても素敵。

まずは、
どこかのサーバにログイン。


$ telnet dokokano.nilab.info
 
$ uname -m -r -s -v
Linux 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64

screen を起動する (新しいウィンドウを生成する)。


$ screen

作業する。
とりあえず ls コマンドでも打っておく。


$ ls
0001.png  0003.png  alice.jpg  bob.jpg   foo.txt   hoge.txt   zura.txt
0002.png  0004.png  bar.txt    dura.txt  hage.txt  zlash.txt
$

作業中断。

(´-`).。oO(あとで作業の続きをしたい)

デタッチ(detach)する。
Ctrl+a のあとに d を入力。


[detached]

どこかのサーバからログアウト。


$ exit
logout
Connection closed by foreign host.

(´-`).。oO(作業再開したい)

どこかのサーバにログイン。


$ telnet dokokano.nilab.info

screen のプロセス番号を調べる。


$ screen -ls
There is a screen on:
        12636.pts-3.hoge       (2011年03月26日 14時05分17秒)   (Detached)
1 Socket in /var/run/screen/S-foobar.

再アタッチ(reattach)する。
-r オプションにプロセス番号を指定。


$ screen -r 12636

$ ls
0001.png  0003.png  alice.jpg  bob.jpg   foo.txt   hoge.txt   zura.txt
0002.png  0004.png  bar.txt    dura.txt  hage.txt  zlash.txt
$

デタッチする前に実行した ls コマンドの結果が表示されたりして便利。

作業再開。

作業終了。screenを終了する。


$ exit

[screen is terminating]

どこかのサーバからログアウト。


$ exit
logout
Connection closed by foreign host.

余談。man screen したら「screen - VT100/ANSI 端末エミュレーション機能を持つ画面管理ソフトウェア」って日本語の名前がついてた。英語だと「screen - screen manager with VT100/ANSI terminal emulation」

Ref. GNU Screen - GNU Project - Free Software Foundation

tags: linux screen

Posted by NI-Lab. (@nilab)