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
画面の外に行ってしまったウィンドウを移動する@Windows 7

Windows XPの場合、ウィンドウが画面外に行ってしまって移動できない場合、 …

no image
Raspberry Pi 2でHDMIから画面が出力されない

Raspberry Pi 2 でOS(Ubuntu)を再起動すると、HDMIから …

no image
PostfixをMaildir形式に変更してCourier-IMAP使用@Debian Etch

SquirrelMailでWebメールを使おうと思ったところ、IMAPサーバが必 …

no image
Sony VAIO Z (VPCZ22) SSDベンチマーク

Windowsの起動が爆速だったので、Sony VAIO Z (VPCZ22)の …

no image
ローカルファイルの読み取り@Javascript with Rhino

Rhinoを使ったJavascriptスクリプトでファイルを読み込むにはread …

no image
WordPressのページ管理画面でページ番号を出力する

WordPressのページ機能で静的なページを作成しているとき、ページの順序を変 …

no image
ログファイル監視 + イベントスクリプト@ruby

ログファイルを監視して、ある文字列が出力されたらイベントを発生させたかったので、 …

no image
ウィンドウが勝手に最大化@Windows 7

Windows 7で、ウィンドウをはしっこに移動したりすると、最大化してしまいす …

no image
sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmo …

no image
Windows 10 の Ubuntu (WSL) でGUI (X Window)を使う

Windows 10 の WSL 上の Ubuntu 上のアプリでGUI(X)が …