2012年9月18日火曜日

タブのように操作可能なscreenコマンドの基本的な使い方

■インストール
yum -y install screen

screen -v
Screen version 4.00.03 (FAU) 23-Oct-06

■スクリーン起動
screen
通常起動
screen -dmS yoshiS
スクリーンの名前を指定してスクリーンモードを起動
screen -r 11111.yoshiS
指定したスクリーンを使用する、11111はプロセスIDを入力する
screen -list
現在起動中のスクリーンモード一覧を表示
一覧で表示されているすべてのスクリーンを一括で削除するコマンドはないようなので
それぞれのスクリーンに切り替えてからスクリーンを閉じて行くしかない

■スクリーンモード起動後の主なコマンド
  • Ctrl+a, cでスクリーンの新規作成を行う
  • Ctrl+a, nで次のスクリーンへ
  • Ctrl+a, pで前のスクリーンへ
  • Ctrl+a, 数字で指定した数字のスクリーンへ
  • Ctrl+wで現在のスクリーンの状態がタイトルバーで確認できる「*」がついているところが現在のスクリーン
  • 各スクリーンでexitを実行することがで作成したスクリーンを閉じることが可能 すべてのスクリーンがなくなれば「screen is terminating」と表示されスクリーンモードが解除される
  • Ctrl+a, Aで現在のスクリーンのタイトルを変更することができる
  • Ctrl+a, Ctrl+aで直前のアクティブウィンドウへ切り替える
  • Ctrl+a, "で現在のスクリーンの状態がウィンドウ上で確認できる
  • スクリーン番号を押下してEnterでそのスクリーンに移動できる
  • Ctrl+a, zでスクリーンサスペンド(スリープ状態)にできる、fgコマンドを打つとスリープ状態のスクリーンを復帰することができる
  • Ctrl+a, dでスクリーンをデタッチすることができる、screen -rコマンドを打つとデタッチしたスクリーンを復帰することができる
  • Ctrl+a, kでスクリーンをkillできるらしいのですができない。。。普通に開いたscreen上でexitコマンドを実行してもkillできます

■所感
基本動作はscreenモード起動後にCtrl+aの次のキーでタブと同様の動作できるようになります
PoderosaやXshellなどのタブ表示可能なターミナルツールと大きく違うなーと感じたところは
  • Ctrl+aの操作でタブ同様の動作ができるので、Linuxキーバインドに慣れているならscreenのほうが操作が早くなるかもしれない
  • スクリーンの状態を保存しておくことができるので、前回終了時から再開することができる(デタッチとサスペンド)
  • 単純に機能が豊富(デタッチやサスペンドもそうだがコピーやスクリーン分割、ログも見れる)
  • クライアントのターミナルツールが落ちてもサーバ側はscreen越しに起動し続けてくれる(デーモン起動できないプロセスなどには便利)
まぁメリット、デメリットあると思います
状況応じて使い分けると非常に便利なツールになりそうです

Ctrl+aの次に打てるキーの一覧は以下にあります
http://www.limy.org/program/screen.html



P.S 20130717
・Ctrl+aのエスケープ
Ctrl+a がscreenで使われているのでカーソルを先頭に移動することができません
emacsのように先頭にしたい場合には設定ファイルにエスケープの定義を追加する必要があります
ただこれを実施するとCtrl+aでscreenの操作ができなくなります
echo "escape ^Tt" >> /root/.screenrc

・There is no screen to be resumed matching
と表示されてアタッチできない場合はすでに誰かがそのスクリーンを使っている状態です
一旦デタッチ(screen -D)してからアタッチ(screen -r)すれば再度アタッチすることができます

0 件のコメント:

コメントを投稿