読者です 読者をやめる 読者になる 読者になる

UNIX的なアレ

UNIX的なこととかいろいろ

もっとscreenを便利に使うためのチュートリアル

Unix Linux

screenを初めて使うためのチュートリアル - Unix的なアレ
の記事が意外と好評だったのでさらに書いてみます。
前回書いた内容は、Screenの基本的な操作を説明する内容でしたが今回はもうちょっとすすんだScreenならでは!な機能について書きたいと思います。
今回もチュートリアル形式で書きます。screenを立ち上げてください。

suspend/atach

まずは個人的にscreenでもっとも便利と思っている機能、suspend/atachについて説明します。
図のようにscreenをあげているとします。

この状態で、以下のキー入力を行ってください。

 CTRL + J のあと、z

下記の表示がでれば成功です。

# screen
[4]+  Stopped                 screen

これは今あげているscreenの状態を保ったまま、一度shellからぬけたような状態です。
それでは戻ってみましょう。

# screen -r 

先ほどあげていたscreenの状態と同じ状態に戻ることができていると思います。
しかも先ほど使用した、detachの機能はいきなりネットワークが遮断されたときもdetachしてくれます。(.screenrcに記述しているため)
自分は以下のような時に使っています。

  • ついつい長めのScriptを動かしちゃったけどそろそろ帰りたい時
  • 一度、回線を切らないといけないけど今の作業状態を保持しておきたい時
  • ネットワークが不安定な時のためのお守り

是非使ってみてください。やみつきになるはずです。

rollback

それではscreenの通常状態に戻りましょう。ターミナル内でrollbackする方法を説明します。

 CTRL + j のあと、ESC (エスケープ)

と押してください。Copy Modeという表示が画面下部に表示されればOKです。
ではそのあと、小文字kを押し続けましょう。図の様にカーソルが上に動くと思います。
カーソル操作は、viキーバインドとなっていますので操作をしてみてください。

このモードでは、Screen上で表示された文字列を追うことができます。
さらに、Copy/Pasteもできます。任意の文字の上にカーソルを会わせてください。

 space (copy開始文字)
 space (copy終了)

若干分かりづらいですが、spaceキーでCopyの開始と終了をセットすることができます。
copied xx cahacters into bufferと表示されれば成功です。
それではペーストしてみましょう。Copyの終了をセットしたらまた通常のプロンプトに戻っていると思います。そこで以下のキー入力をしてください。


CTRL + j のあと、] (カッコ)

これも特殊なキー入力になりますが、この入力で先ほどCopyした内容がpasteされます。

screenでsshするときによりシンプルに!

sshでリモートのホストに入るときに、screenをあげる際には以下のコマンドでやります。


# screen -t {screenname} ssh {servername}

ただし、これはさすがに面倒ですしRemoteで入る際はscreennameとservernameは同じで良いはずです。
自分はこの入力が面倒だったので、以下のようなScriptを用意しておきます。

sssh.sh :

#!/bin/sh
screen -t $1 ssh $1


このようなシェルスクリプトを用意してPATHを通しておくだけで以下のように簡単にscreenをあげてremoteserverにsshをすることができます。

# sssh.sh {servername}

ちょっとクセのある使い方になりますが、なれるとすごく便利です。

まだまだ機能はありますが。

今回は、自分が頻繁に利用する2つの機能+tipsについて紹介させていただきました。
実際にはまだまだscreenには機能があります。もっとscreenの布教活動を行っていきたいので、また気が向いたら書いてみようと思います!

追記

KoshianXさんからコメントいただきました!

『C-j z と C-j d の違いについて追記してみるといいと思いますよ。
ヒント:fgコマンド』


CTRL + j のあと、z

上記の方法detachではなく、bashでsuspendさせているという方が正しいです。
ぞのため、以下の方法で調べることができます。

# jobs
[1]+ Stopped screen

CTRL + dはscreen側でdetachさせているといえばよいのでしょうか。
ちょっと怪しいのでこちらは調べます。

なお、detachさせた場合もsuspendさせて場合もscreen -r でattachさせることができます。
screen -r は以下のpidを見て復旧をさせているようです。


# ls -l /var/run/screen/S-wadap/
合計 0
prw------- 1 shwada shwada 0 2008-01-18 08:59 32394.pts-0.ubuntu
prw------- 1 shwada shwada 0 2008-01-18 08:59 32400.pts-0.ubuntu

調べてみる機会を作っていただき、ありがとうございました! > KoshianXさん