Multitailの紹介

※このメモは暇で仕方がない時に、思いつきでやってみた Multitailの manual.html の翻訳です。

適当な翻訳なので、原文も参照しながら読んでください。

はじめに

Multitailとはなにか

MultiTail は、一つまたは複数のファイルを、オリジナルのTailと同じように表示することが出来ます。

違いは、

  • 一つのコンソール画面の中に、(ncurses を使って)複数のウインドウを作成すること

  • 複数のファイルを結合して表示出来ること

  • 重要なことを認識しやすくするため、(正規表現を使って)ログファイルの色分けが出来ます。

  • (正規表現を使って)ログのフィルターが出来ます。

  • 正規表現を編集したり、ログファイルを追加したり削除するための、対話型メニューがあります。

  • shell script や 他のソフトウェアの出力を取り込むことが出来ます。

  • 他のソフトウェアの出力を表示している場合、監視ツールのような機能をまねることが出来ます。

なぜこのテキスト?

multitailをパラメータ無しで実行したとき、画面がクリアされ、簡単な説明と共に、使用出来る一組のキーが表示されます。

プログラムを終了するために、`x` `q` `Ctrl + C` のどれでも使えます。

コマンドラインパラメータを知りたい時は、-h パラメータを付けて、multitailを実行してください。

上記の方法で得られる help は十分ではないかもしれません。それがこのテキストが書かれた理由です。

もし、このテキストを読んでもなにか不明確なことがあれば、以下のメールアドレスを使って、私と連絡をとることをためらわないでください。

e-mail address: folkert@vanheusden.com

基本

multitail の もっとも基本的な使い方は以下の通りです。

multitail [-i] file

これは、"file" というファイルを、ターミナルウインドウの中に表示します。

最下行(ステータスライン)には、ファイル名、サイズ、ファイルの更新時間を表示します。

コマンドラインパラメータ'-d' を使うと、このステータスラインを静的(アップデートしない)に出来ます。

(訳注:solaris10では空行になる...あってるのかな?)

コマンドラインパラメータ'-D' を使うと、ステータスライン自体を表示しません。

ファイル名がダッシュ('-')で始まるときは、'-i'オプションを指定しなければいけません。

もう少し複雑な使い方はこれです。

multitail [-i] file1 [-i] file2

これは、ターミナルウィンドウを二つに分割します。

各ウインドウでは、一個のファイルを表示します。

両方のウインドウに、ステータスラインがあり情報を表示します。

file2を表示しているウインドウの上に、file1 を表示しているウインドウが表示されます

上下の代わりに、左右に並べて表示することもできます。

この為には、コマンドラインパラメータ'-s' を指定するか、実行中に'v'キーを押す事ができます。

0 から 9 のキーを押すことで、0 から 9 の各ウインドウの位置に 赤く太いラインが表示されます。

スクロール

もちろん、表示されているファイルをスクロールすることが出来ます。

その為には、'b'キーを押してください。

複数のファイルを表示している時は、まず、ファイルセレクターが表示されます。

それから、選択したファイル(=window)のバッファの内容がウインドウに表示されます。

これで、カーソルキー と 'page-up' 'page-down'キーでスクロールできます。

'x' か 'q' キーを押すと、このウインドウが閉じます。

ファイル全体をスクロールすることは出来ません。最後から100行だけです。

この制限を大きく(または小さく)変更する為には、'm' キーを押します。

そうすると、新しい値を入力するように求められるでしょう。例えば1000

このパラメータは、コマンドラインパラメータ'-m value'でも同様に設定できます。

'-m'は、後に続くファイルの制限を変更します、'-M value'はコマンドライン上すべてのファイルの制限を変更します。

'm' キーを押したとき、カレントバッファーの内容はクリアされます。(訳注:'n' の間違いだとおもう)

これは、tail -f を使っている時、数回 enterキーを押すことと置き換えることが出来ます。

ファイルの結合

それから、'-I' コマンドパラメータがあります。

これは、'-i'と同じですが、'-I'は二つかそれ以上のファイルを結合します。

例えば:

multitail [-i] file1 -I file2

実際のファイルでの実行例:

multitail /var/log/apache/access.log -I /var/log/apache/error.log

これら、二つの実行例では、与えられたファイルの出力が、一つのウインドウに結合されるでしょう。

この例は便利です。

2番目の例で与えられたファイルでは、apache のエラーログにエラーが現れる直前に何が起こったのか見ることが出来ます。

外部プログラムを取り込む

はじめに、で説明したように、multitail はファイルを表示できるだけではありません。

他のプログラムの出力も表示できます。(scripts/executables/etc.)

これは、一つまたは複数のウインドウのに表示することが出来ます。

これを使うには、'-l'スイッチを使う必要があります。

例えば:

multitail -l ls

他の例:

multitail -l "ping localhost"

ごらんの通り、コマンドにパラメータが必要なときは、doublequotes(")でコマンドを囲む必要があります。

そうしなければ、MultiTailはパラメータが指定したプログラムに与えられたものか、Multitailに与えられたものか、判断する事が出来ないでしょう。

あなたは、'ls' コマンドで試したかもしれません。

そのとき、コマンドの終了と同時に、MultiTailが自動的に閉じられたはずです。

これを制御するために、いくつかのオプションがあります。

例えば '-z'パラメータ

これが指定された場合、プログラムが終了すると、MultiTailはポップアップウインドウを出さずに終了します。

他には'-r interval'オプション

これは、interval 秒毎に、コマンドを繰り返し実行します。

'-r interval'の代わりに、'-R interval'も利用できます。

これが指定された場合、interval 秒毎にコマンドを実行し、表示が前回と異なる部分のみ表示します。

multitail -R 3 -l "netstat -p tcp"

新しい TCP-connection の open または close を見ることが出来ます。

'-I file' と同じように、'-L command' も外部コマンドの出力を、前のファイル またはコマンドの出力と結合できますか。

Yes: コマンドの出力は、安全にログファイルと結合できます。

複数のコマンド、複数のログファイル、あなたが考えることが出来る大抵のことが可能です。

あなたが、ログファイルをスクロールして見ていたとき、少しの情報を得ることが出来るでしょう。

けれども、しばらくして、まだ重要なな何かやそうでない何かを見つけるかもしれません。

その為に、MultiTail はログファイルをカラー表示する機能を持っています。

'-c'パラメータを指定したとき、次に指定したファイルまたはコマンドの出力をカラーで表示します。

これは、行全体を見て何色を使うか決定します。

もしあなたが、ログラインのプログラム名を指定するだけで使用したい場合、(syslogを参照する場合)'-cs'スイッチを使うことが出来ます。

最後のオプションは'-cS colorscheme'です。

これは、パラメーターとしてcolorscheme名の指定が必要です。

colorschemesは、multitail.conf から読み込まれます。

正規表現パターンによって、何色が使われるか、multitail.conf に設定してください。

MultiTail は、標準では カレントディレクトリ と /etc ディレクトリで mulititail.conf を探します。'-z'パラメータで、どのファイルを使うか明示することが出来ます。

(訳注:'-F'パラメータで明示)

例:

colorscheme:postfix

cs_re:yellow:status=sent

cs_re:magenta:queue active

一行目は colorscheme名です。

'cs_re' の行は、正規表現と色のセットを明記します。

最初の'cs_re'行は、MultiTail が 'status=sent' を見つけた時に、それを黄色で表示することを表しています。

次の行は、'queue active'を見つけた時、マゼンタで表示することを表しています。

少し複雑な例:

colorscheme:syslog

cs_re:green:\[|\]

cs_re:blue:^... .. ..:..:..

最初の 'cs_re' 行は、'[' か ']' が付くすべての行をみどりいろで表示します。

また、日付が'Mon DD HH:MM:SS'の形式で始まるすべての行を青色で表示します。

正規表現についてのもっと詳しい説明は... o'Reilly 正規表現を取り扱った本がいくつかあります。

最後に色について一つ:

'-C' (uppercase 'C')を'-c'の代わりに使った場合、'-cx' か '-Cx' パラメータで上書きしない限り、以降のすべて

のファイルについて指定した設定が使われます。

正規表現でのフィルタリング

MultiTailはフィルタリングのために正規表現を使います。

簡単に保つために、grep とまったく同じ方法を使います。

'-e' は、正規表現が続くことをあらわします。

'-v' は、動作を反転させます。

version 3.5.0 から、いくつかの変更がありました。

もし、あるパターンを持たない行にマッチさせたい場合、 -ev を使ってください。

(訳注:以下の例も -v -e は、 -ev に読み替えてください)

例:

multitail -e "gnu-pop3d" /var/log/messages

multitail -v -e "ssh" -v -e "gnu-pop3d" -e "localhost" /var/log/messages

最初の例は、/var/log/messages の行のどこからに文字列 "gnu-pop3d" を持つ行を表示します。

二つ目の例は、文字列 "ssh" と文字列 "gnu-pop3d" を含まず、"localhost" を持つ行だけを表示します。

雑多なオプション

その他のいくつかのオプションがあります。それらは:

それですべて?

いいえ、このマニュアルではすべてはカバーしていません。

利用できるすべてのオプションやキーを知るには、 man-page を参照してください。

これは、'-h' コマンドラインオプションを使うか、実行中に'h'キーを押してください。

それと、ソースコードを忘れないでください!

MultiTailの最新版は、いつでもこちらで見つけられます: http://www.vanheusden.com/multitail/