仮想端末screenを使う
screen とは、ひとつの端末で複数の端末画面を持つことができる仮想端末ソフトウェアです。 このscreenがあるのと無いのでは大違いで例えばリモートホストに screen 経由でログインしている場合、回線が切れてしまったりした時や操作しているローカル端末が落ちてしまってもリモートホストとのセッションは自動的にデタッチ状態に入るのでscreenのレジューム機能を使い再度アッタチすれば前回の接続時の続きから作業する事が可能になります。 このようにリモート接続して端末を操作する場合にはなくてはならないソフトウェアです。 また一つの画面で複数の端末を操作できるためターミナルだらけになる心配はありませんね。 screenを使っていて便利な所はscreen経由で接続していれば任意の時点で切断することができ、他の端末からでも接続を再開する使い方が出来ることにある。
screenの起動
$ screen
起動時のオプションが色々あります
開いているscreenセッションの一覧を表示する
$ screen -w or $ screen -ls There is a screen on: 42683.pts-1.ns (Detached) 1 Socket in /tmp/screens/S-foo
表示される42683がpidである。レジュームする際にこの番号を指定してレジュームする事が出来ます。
レジューム・アタッチ
$ screen -r [pid]
デタッチした screen セッションの復帰を行います。pid番号は screen -lsや-w でも確認できる。 pid はデタッチした screen セッションが1つならば省略も可能です。 ネットワークの不具合により接続が途切れてもpidを使って再接続することが出来るとても便利な機能です。
マルチアタッチ
$ screen -x
既に開かれているセッションにアタッチすることができる。他の端末からそのホストにアクセスしてscreen -x することで、同じ画面を2つの別の端末からアクセスしたり出来ます。
screenの環境設定
.screenrc設定ファイルを編集する
screen接続中に使えるctlコマンド
新しいウィンドウを開始する
ctl-a c
接続を閉じる
ctl-d 又は $ exit
次のウィンドウに移動する
ctl-a [SPACE] ctl-a n
1つ前のウィンドウに移動
ctl-a [BS] 又は ctl-a p
screenセッション番号一覧を表示
ctl-a w
0 番目のウィンドウに移動
ctl-a 0
デタッチ
ctl-a d
意図的に通信を切断する場合(後で再接続が必要な場合)ここでデタッチしたセッションはレジュームscreen -rで復帰できます。
screen接続を終了
ctl-a k
シェル起動時screen自動起動
.bashrc や.bash_profile に以下を記述します。シェル起動時に screen を自動起動してくれます。 すでに screen セッションがある場合そこに接続し、なければ作成する。
$ screen -xR
profile内容が読み込まれない
自動的にscreenを起動させて screen に入っても bash_profile の内容が反映されていない状態になり自分用にカスタマイズした設定(aliasとか)が台無しになります。 screen に入った時に自動で profile を読みこむように ~/.screenrc ファイルを作成し以下を記述して下さい。
shell -$SHELL