Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

screenコマンド覚え書き@Linux

      2013/07/15

ssh接続が切れても作業環境を保てたり、複数画面を切り替えられたり、画面上の文字列をコピペできたりと、かなり便利なscreenコマンドですが、少し使わないでいると使い方をすぐに忘れてしまうので、覚え書き。

まずは最低限の設定

screenへ何かコマンドを送りたいとき Ctrl+aを使うのがデフォルトなのですが、Ctrl+aはコマンドラインでは行の先頭にカーソルを移動させる命令でよく使うので、Ctrl+oに変更してみます。

~/.screenrc以下を記述するだけです。

escape "^Oo"

さらに、screenで複数の画面を使っていると、今使っている画面が何番かわからなくなるので、コマンドのプロンプトに画面の番号を表示するように変更。~/.bashrcに以下を追記。screenコマンドを立ち上げると、$TERMにscreenがセットされるようです。

if [ "$TERM" == "screen" ]; then
    export PS1='\h:$WINDOW:\w\$ '
fi

さらに、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
$

さらに矢印キー(viのようにhjklキーでもOK)でコピーしたい文字列の最後に移動。(環境によってはこのように色が変わらないかもしれません

$ echo hoge
hoge
$

スペース入力でコピー完了。 その後、Ctrl+a ] で貼り付け。

$ echo hoge
hoge
$ echo hoge      ← echo hogeがコマンドラインに貼り付けられる

リターンを押せばもちろんecho hogeが実行されます。

仮想の新しい画面を作る。

Ctrl+a c を入力
$               ← 新しいシェルが立ち上がります

この時、最初に書いたようなコマンドプロンプトの設定をしていると、以下のように新しいウィンドウ番号になります。

mazn@localhost:1:~/ $

今立ち上がっている画面一覧を表示。

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 TAB

できることはこんなもんじゃないです。詳細はmanでもみてください。

 - IT技術, サーバ構築, プログラミング , ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
KVM on KVM @ Fedora 17

最近のLinuxカーネルは、KVMのネスト (KVMのゲストOS上でKVMを動か …

no image
PS3ファームウェアは3.0に!

PS3のファームウェアが着々と進化してますね。ついに3.0が2009/9/1にリ …

no image
ディスクイメージをデバイスファイルとして扱う@CentOS5.4 + Xen

※ 2015/4/30追記 : mountオプションで直接マウントする方法を書き …

no image
コマンドの実行@Javascript with Rino

RhinoエンジンでのJavascriptのコマンド実行方法。 適当な配列(op …

no image
ck@cygwin 1.7

cygwin 1.7 より前では、ターミナルエミュレータにckを使っていたのです …

no image
LDAPサーバ構築 その2 – Sambaサーバとの連携 @ Debian etch

LDAP+SambaでPDCを構築する方法です。 # apt-get insta …

no image
apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメ …

no image
screenからtmuxに乗り換えてみる

screenからtmuxに乗り換えた時のメモ。 まずは、ネットの情報を参考に、~ …

no image
異なるポート間でポートフォワーディング@NEC Aterm のルーター

NEC Aterm系のルーターは、ポートマッピングという機能があります。 通常の …

no image
ディスクイメージを直接マウントする@Linux

以前、ディスクイメージファイルをkpartxを使ってマウントする方法を紹介しまし …