インフラエンジニアbacchiのわかったことまとめ

bacchi.me

作業がグッと楽になる screen を使おう!

作業がグッと楽になる screen を紹介したいと思います。

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

ぱっと思い浮かぶだけでも以下のメリットが挙げられますねー

  • 1つのウィンドウで仮想端末を複数立ち上げられる
    • バカみたいにウインドウを開けなくてすむ。
    • 目当てのウインドウを求めて彷徨う必要がなくなる
  • 開いていた端末の状態を保持しておける
    • セッション切れたりしても無駄に慌てなくてすむ
    • 精神衛生によいです
  • 1つのウィンドウで追加したbushを分割表示できる
    • 複数端末でログ監視したいときなど超便利
    • ログ吐かせながら設定ファイルいじれたりもできちゃう
    • でも縦分割ができないのは激烈に不満!

そんなクッソ便利なscreenの導入から使い方までをまとめましたd(ツ)b

インストール

Macだと標準でver.4.0.3が入ってます。(2015/02/23 現在、MacOS 10.10)

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

Linuxへのインストールは以下のコマンドをしばけばOK

  • UbuntuなどのDebian系
# apt-get install screen
  • CentOSなどのRHEL系
# yum  install screen

設定のカスタマイズ

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

私は以下のような設定にしています。

最大のポイントはショートカットキーをCtrl + aからCtrl + jに変更していることです。
Ctrl + aはターミナルのショートカットキー(行頭へ移動)とかぶるからよろしくない。

デフォルトでは scrollback buffer サイズが100しかないので、
設定を変更して十分な大きさにしています。

autodetachを有効にすることでscreenがいきなり
お亡くなりになられても、その時のプロセスは生きて残ります。

また、画面下部に色付きで、左からscreenを立ち上げたホスト名screenの名前日時を表示するようにしています。

$ cat ~/.screenrc
# Encoding
defencodig utf-8

# Prefix Key
escape ^Jj

# set scrollback
defscrollback 1000000

# Delete sartt up screen
startup_message off

# Enable 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 "

使ってみよう

実際に使って覚えるのが早いです。

これを押さえとけば勝利が約束されたも同然!
なコマンドやキーバインドをまとめましたのでガシガシ使っていきましょう。

上述の通り、独自のショートカットキーの設定に則ったコマンドです。

(adsbygoogle = window.adsbygoogle || []).push({});

絶対覚えておくべきコマンド・キーバインド

screen 起動

$ screen

screen 内で新しい仮想端末を開く

[Ctrl + j] + c

現在のウィンドウの名前を変更する

[Ctrl + j] + A

screen 内で動いている仮想端末の一覧表示

[Ctrl + j] + w

screen 内で動いている別の仮想端末に移動する

[Ctrl + j] + n または [Ctrl + j] + [space]:昇順移動
[Ctrl + j] + p または  [Ctrl + j] + [del]:降順移動
[Ctrl + j] + 数字:(数字)で示される仮想端末に移動
[Ctrl + j] + [Ctrl + j]:直前に使っていた仮想端末へ戻る

現在開いている仮想端末を閉じる(kill)

[Ctrl + j] + k

現在開いている仮想端末をサスペンド状態にして閉じる(デタッチ)

[Ctrl + j] + d

screen 内でデタッチ状態で動いている仮想端末の一覧表示

$ screen -ls (ここで PID が確認できる)

screen 内でデタッチ状態で動いている仮想端末に戻る(アタッチ)

$ screen -r PID

デタッチせずに screen を終了する

[Ctrl + j] + \

起動中の screen をバックスクロールモードにする

[Ctrl + j] + [

バックスクロールモードでテキストコピー

カーソルを始点に移動させて [space] または [enter]
カーソルを終点に移動させて [space] または [enter]

コピーしたテキストのペースト

[Ctrl + j] + ]

画面を上下2分割

[Ctrl + j] + S

画面を左右2分割

[Ctrl + j] + |
※screenのバージョンが4.01以上の場合

画面分割後にフォーカスする画面を変更

[Ctrl + j] + [tab]

画面分割をやめる

[Ctrl + j] + Q

  • B!