【Linux】screenでリッチな画面管理

 

こんにちは。竪月です。

今日はLinuxにおける便利なツール「screen」を紹介したいと思います。

 

screenとは

1つのウィンドウ(端末)に、複数の仮想端末を起動して使うことができる画面管理ソフトです。

 

screenの何が便利かというと

 

①1つのウィンドウで仮想端末を複数立ち上げられる

一度にいろんなことしたくなりますよね。

複数のログを同時にtailfしたり、scriptを実行したり、ifconfigしたくなったり、tcpdumpしながら実行ログを同時に確認したくなったり。。。

そんなとき、毎回新しいウィンドウを起動する必要はありません。1つのウィンドウ上で複数の仮想端末を開いて動作させればいいんです。

 

②開いていた端末の状態を保持しておける

長期試験とか、突然のネットワーク切断とか、いったん離れた端末ウィンドウは、通常なら状態復帰できません。

でも、screenなら自動で状態保存してくれるので、次使いたいときアタッチするだけでいいんです。元の状態から再開できます。便利。

 

③1つのウィンドウで追加したbushを分割表示できる

例えば複数のログを仮想端末でtailfして、それを同時に監視したいときは、以下のように画面を分割すればいいんです。もちろん2つ以上複数分割できます。
ただ、1つの分割画面だけをスクロール、みたいなことはできなかった気がするので、そんなときはバックスクロールモードを使ったらよいと思います。

screen_2pain

④and so on…

ほかにもいろいろ便利な要素はあります。

screenに名前をつけて、さらに各仮想端末にも名前を付けられるので、例えば、私はlogtail用に”logtail”、設定ファイル編集用に”config”、ただのワーク用に”work”などの名前を付けています。視覚的にもとてもわかりやすい、ですね。

また、バックスクロールモード(ウィンドウ内の表示からきれた前の部分を遡って見たり、コピペしたり)なんかもあります。

 

さっそくインストール

macだと標準でver.4.0.3が入ってます。

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

ほかのOSへのインストールは以下でできるみたいです。

UbuntuなどのDebian系

# sudo apt-get install screen

CentOSなどのRedHat系

# yum -y install

 

設定のカスタマイズ

ホームディレクトリで.screenrc(設定ファイル)を作成し、文字エンコードやキーバインドの設定をカスタマイズできます。
私は以下のような設定にしています。

# vi ~/.screenrc
# Encoding
defencodig utf-8

# Prefix Key
escape ^Ww

# Delete sartt up screen
startup_message off

# Auto detach
autodetach on

# logging
log on
deflog on
logfile "/Users/YourName/screen/log/screen-%Y%m%d-%n.log"

# Show date and screen list
hardstatus alwayslastline "%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c "

 

使ってみよう

では、早速スクリーンを作ってアタッチしましょう。

以下に基本的なコマンドを以下に書き出しましたので、備忘メモとして使ってください。

 

screenを作ってアタッチ(screen起動)

$screen -S MyScreen

screenをデタッチ(screen終了)

$screen -d MyScreen

screenの一覧を表示

#screen -ls
There are screens on:
	1659.develop	(Detached)
	2728.MyScreen	(Detached)
2 Sockets in /var/folders/sd/XXXxx/T/.screen.

一覧に先ほど作ったscreenが追加されてますね。

screenに再アタッチ(※-xは既にアタッチ済みでもアタッチ可能)

$screen -r MyScreen または screen -x MyScreen

アタッチ後の画面は以下のような感じです。

画面下部に色付きで、左から「PC名(隠してます)」「bash名(一覧)」「日時」が表示されています。(※設定参照)

screen_atached

bash名の変更 (※^wは設定の「escape」で変更、デフォルトは^a)

^w(Ctl + w), A (Shift + a)

※^はCtrlキーと読み替えてください。上記の場合は、Ctl + w を同時押した後、Shift + a を同時押しします。

bashの追加

^w, c

bash一覧の表示(上下キーで選択、Enterで決定すると、選択したbashを開く)

^w, "

bashを分割(^w,Tabキーで次のbashへ移動)

^w, S

バックススクロールモード(抜けるのはescキー)

^w, ESCキー

コピーモード(開始位置、終了位置はspaceキーで設定)

^w, [

 

まとめ

いかがでしたか。使い慣れるまではいちいちキーを調べたり面倒なのですが、慣れるとなくてはならなくなりました。(特にサーバサイド開発で試験するとき)

私が初めてscreenを使ったときは、めちゃ便利!と思ったので、みなさんもよかったら使ってみてください。

他にも便利な機能はあり、私もまだまだ使いこなせてないものもありますが、今回はこれくらいにしておきます。

 

コメントを残す

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