ssh接続が切れても作業環境を保てたり、複数画面を切り替えられたり、画面上の文字列をコピペできたりと、かなり便利なscreenコマンドですが、少し使わないでいると使い方をすぐに忘れてしまうので、覚え書き。
まずは最低限の設定。
screenへ何かコマンドを送りたいとき Ctrl + aを使うのがデフォルトなのですが、Ctrl + aはコマンドラインでは行の先頭にカーソルを移動させる命令でよく使うので、maznはCtrl + oに変更しています。
~/.screenrc以下を記述するだけです。
escape "^Oo"
さらに、screenで複数の画面を使っていると、今使っている画面が何番かわからなくなるので、コマンドのプロンプトに画面の番号を表示するように変更。~/.bashrcに以下を追記。screenコマンドを立ち上げると、$TERMにscreenがセットされるようです。
if [ "$TERM" == "screen" ]; then
export PS1='h:$WINDOW:w$ '
fi
さらに、KtermやPuttyのタイトルバーに出てくる文字列も変えたい場合は~/.screenrcにこう書く。
defhstatus "$USER@^EH_^En ^Et -- ^EW"
”user名@host名_スクリーン番号 スクリーン名 — 非アクティブなスクリーン名一覧”が表示されます。
screenの基本
※以下は、上記のCtrl+oへの変更はしておらず、screenへの命令はデフォルトのCtrl+aを使っていると仮定
screenを立ち上げて、hogeと表示してみる。
$ screen
$ echo hoge
hoge
screenから一時的に抜ける (デタッチという)
Ctrl+a d を入力
現在のスクリーン一覧表示。上で一時的に抜けたscreenが表示されます。
$ screen -list
There is a screen on:
10230.pts-0.pc01 (Detached)
1 Socket in /var/run/screen/S-mazn.
デタッチしているスクリーンに再度繋ぐ(アタッチという)。上で打ったecho hogeが残っているのが確認できます。
$ screen -r 10230
$ echo hoge
hoge
$
画面上の文字列をコピー
Ctrl+a ESC を入力してコピーモードにする
矢印キーでカーソルを自由に動かせるので、コピーしたい文字の先頭に移動しスペースを入力。ここでは echo hogeをコピーします。
$ echo hoge
hoge
$
さらに矢印キーでコピーしたい文字列の最後に移動。
$ echo hoge
hoge
$
スペース入力でコピー完了。 さらにCtrl+]で貼り付け。
$ echo hoge
hoge
$ echo hoge ← echo hogeがコマンドラインに貼り付けられる
リターンを押せばもちろんecho hogeが実行されます。
仮想の新しい画面を作る。
Ctrl+a c を入力
新しいシェルが立ち上がります。
$
今立ち上がっている画面一覧を表示。
Ctrl+a w を入力
ターミナルの一番下に以下のように立ち上げている画面一覧が表示されます。
0-$ notitle 1*$ notitle
screen立ち上げた直後の画面番号が0、Ctrl+a cで作った画面番号が1で、”*”がついているのが今見ている画面です。
試しにgehoと表示
$ echo geho
geho
$
画面0に戻る
Ctrl+a 0 と入力
$ echo hoge
hoge
$
画面1に戻る
Ctrl+a 1 と入力
$ echo geho
geho
$
直前の画面(ここでは画面0)に戻る
Ctrl+a Ctrl+a と入力
$ echo hoge
hoge
$
まだ、いろいろできますが、書くのが面倒なのでコマンドと意味だけ。
次の番号の画面へ Ctrl+a n または Ctrl+a Ctrl+n
前の番号の画面へ Ctrl+a p または Ctrl+a Ctrl+p
現在の画面破棄 Ctrl+a Ctrl+k
bashにCtrl+a(カーソルを先頭に)を送る Ctrl+a a
ウィンドウを分割する Ctrl+a S
分割したウィンドウを閉じる Ctrl+a Q
分割したウィンドウで他のウィンドウへ移る Ctrl+a I
できることはこんなもんじゃないです。詳細はmanでもみてください。
Tags: IT技術, サーバ構築, プログラミング by mazn
No Comments »