もっとscreenを便利に使うためのチュートリアル
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の終了をセットしたらまた通常のプロンプトに戻っていると思います。そこで以下のキー入力をしてください。
これも特殊なキー入力になりますが、この入力で先ほどCopyした内容がpasteされます。
CTRL + j のあと、] (カッコ)
screenでsshするときによりシンプルに!
sshでリモートのホストに入るときに、screenをあげる際には以下のコマンドでやります。
ただし、これはさすがに面倒ですしRemoteで入る際はscreennameとservernameは同じで良いはずです。
# screen -t {screenname} ssh {servername}
自分はこの入力が面倒だったので、以下のようなScriptを用意しておきます。
このようなシェルスクリプトを用意してPATHを通しておくだけで以下のように簡単にscreenをあげてremoteserverにsshをすることができます。
sssh.sh :
ちょっとクセのある使い方になりますが、なれるとすごく便利です。
# sssh.sh {servername}
まだまだ機能はありますが。
今回は、自分が頻繁に利用する2つの機能+tipsについて紹介させていただきました。
実際にはまだまだscreenには機能があります。もっとscreenの布教活動を行っていきたいので、また気が向いたら書いてみようと思います!
関連記事
screenを初めて使うためのチュートリアル - UNIX的なアレ
Let's use SCREEN!
http://www.linux.or.jp/JM/html/GNU_screen/man1/screen.1.html
追記
KoshianXさんからコメントいただきました!
『C-j z と C-j d の違いについて追記してみるといいと思いますよ。
ヒント:fgコマンド』
上記の方法detachではなく、bashでsuspendさせているという方が正しいです。
CTRL + j のあと、z
ぞのため、以下の方法で調べることができます。
CTRL + dはscreen側でdetachさせているといえばよいのでしょうか。
# jobs
[1]+ Stopped screen
ちょっと怪しいのでこちらは調べます。
なお、detachさせた場合もsuspendさせて場合もscreen -r でattachさせることができます。
screen -r は以下のpidを見て復旧をさせているようです。
調べてみる機会を作っていただき、ありがとうございました! > KoshianXさん
# 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