私は最近めっきり開発から離れている感じで、DBの負荷対策とか
DBやシステム全体を含めた環境には強くなっているのですが、開発能力はめっきり衰えた気がします。
このままだと現在の仕事が終了した際に、開発者として再度仕事に復帰できるかちょい心配。
普段から家で色々作ったりはしていますが、フリーソフト系の作者って基本的に業務活かせない限り
評価されないんですよね・・・
まぁ、それはそれとして・・・私は最近仕事でGNU screenを使用しているのですが、
使用時に使い方を忘れてしまい、よくその場で調査して時間を喰ってしまっています。
忘れてしまう理由としては、機能が豊富でそのほとんどがショートカットキーであるということ、
調査に時間がかかる理由は、Web上だと多くの場合がデフォルトのキー設定を使用していないので
職場の環境と異なってしまうからです。
なので、私がよく使う機能や使い方、注意点を一覧にしてみました。
キーは全てデフォルトから変更していないので、ここに記載されているコマンドはそのまま使用できます。
screenとは何か?という方はこちらをご覧ください。
メリットを簡単に書くと
①一度の接続で複数のコンソールを操作できる
②通信障害が起きても、コンソールからの切断を余儀なくされても処理は継続されている
③自分のコンソール操作を他の人がネットワーク越しに見ることが出来、また複数人で操作することも出来る
他にもログ機能などの便利な機能があるのですが、私のscreenを使う目的は上記3つに集約されます。
以前は時間がかかる処理はnohupやコマンドの最後に「&」などをを使用していました。
nohupだと対話的な処理には使用できないし
処理の終了が補足出来なかったのですが、screenがあればnohupを使用しなくてもよさそうです。
使い方
起動しているscreen 一覧を取得する
$ screen -list または $ screen -ls
screenを新規に作成して起動
# 日付と目的(以下の例の場合にはdatabaseImport)をつける習慣をつけると、
# 停止させて良いscreenがすぐにわかってよい
$ screen -S 20100311_databaseImport
特定のscreenにアタッチする
$ screen -x 1841
ちなみにアタッチは 「screen -r」でも可能ですが、
「screen -x」を使用すると誰かがアタッチしているセッションにもアタッチ可能なので
-x だけを覚えておけばよいと思う。
デタッチする
$ screen -d 1841 または screen -D 1841
デタッチを行うと、そのセッションで操作している人は全て切断されてしまうので注意が必要です。
処理自体は中断されないため、再接続すればよいのですが、それでも一旦作業が中断してしまうことにはかわりがないので
デタッチは慎重に行ってください。
実行例
$ screen -list
There are screens on:
1841.20100311_databaseImport (2010年03月14日 19時22分46秒) (Attached)
1211.20100224_mysqlInport (2010年02月24日 12時45分32秒) (Attached)
2 Sockets in /var/run/screen/S-lfll.
# 1841.20100311_databaseImportにアタッチする
$ screen -x 1841
次にショートカットキーについて説明します。
ショートカットキーはエスケープキャラクタの入力後に特定のキーを押します。
エスケープキャラクタとはショートカットキーの基点となるキーのことです。
デフォルトはCtrlを押しながら「a」(以下「C-a」と記載)ですが、
このキーはviやシェルなどでも使われるキーなので通常は変更しますが
今回はわかりやすくするためにデフォルトのキーバインドから変更はいたしません。
※ショートカットキーはscreen にアタッチ後に入力します。
ウィンドウを新規で作成する
C-a c セッション内で新規のウィンドウを作成する
特定のsession内で動いているウィンドウを表示する
C-a w
特定のsession内で動いているウィンドウを切り替える
C-a p 前へ
C-a n 次へ
C-a 数字 その番号のウィンドウへ切り替える
C-a A ウィンドウに名前を付ける
ウィンドウの削除
C-a k (kill) 現在のウィンドウを破棄する。
※対象ウィンドウ内で「exit」でも構わない。
C-a \ (quit) すべてのウィンドウを破棄し、 screen を終了する。
windowの分割
C-a S 上下に分割
C-a tab ウィンドウを移動する
C-a Q 現在の領域以外を消す
C-a X 現在の領域を消す
私がよく使用する機能はこんなところです。
他にも便利な使い方があれば教えて下さい。
Template Designed By
ぐらいんだぁ
ぐらいんだぁ