MultiTail是一個用來實現同時監控多個文件、類似tail命令的功能的軟件。該軟件的主頁地址為http://www.vanheusden.com/multitail/。它和tail的區別就是它會在控制臺中打開多個窗口,這樣使同時監控多個日志文件成為可能。本文將講述MultiTail的應用技巧。
基本應用
使用MultiTail的命令是“multitail [-i] file”。MultiTail將會在終端中顯示文件內容,在屏幕底部會顯示被打開文件的文件名、大小和最新修改時間。用戶可以使用“-d”參數保證該狀態行保持不變,或者使用“-D”來關閉該狀態行。如果要指定多個文件,則命令如下:
#multitail [-i] file1 [-i] file2
各個窗口都具有狀態條。初始啟動MultiTail時,各個窗口是上下排列,可以使用“v”命令來修改排列模式。
滾動文件
通過“b”命令用戶可以在被打開的文件中進行滾動。如果MultiTail打開多個窗口時,“b”命令將首先打開一個文件選擇器。在選擇好要查看的文件以后,MultiTail將會再次打開一個緩沖窗口,顯示要滾動查看的文件內容。用戶可以使用鍵盤的上下箭頭來查看文件內容,使用“x”或“q”來退出緩沖窗口。緩沖窗口只能顯示文件最后100行內容,而不是整個文件。用戶可以使用“m”命令來修改該限制。在用戶輸入“m”以后,MultiTail會提示輸入新的緩沖值,例如1000。當然也可以在啟動時使用“-m value”命令來設置緩沖大小,但是它只對僅跟該參數的文件起作用,而使用“-M value”可以對后面指定的所有文件設置緩沖大小。
合并文件內容
MultiTail有一個“-I”參數。它會合并兩個或更多的文件內容。舉例如下:
#multitail /var/log/apache/aclearcase/" target="_blank" >ccess.log -I /var/log/apache/error.log
這個示例將合并兩個文件的輸出到同一個窗口中。這非常有用,例如用戶希望查看Apache出現錯誤之前發生了什么事情,這樣可以同時查看訪問日志和錯誤日志的輸出了。
查看外部程序的輸出
MultiTail不但可以監控文件內容,而且還可以在一個或多個窗口中查看其它程序的輸出,例如腳本、程序等。為了查看外部程序輸出,需要使用“-l”參數。下面舉兩個例子:
#multitail -l ls
#multitail -l“ping localhost”
當外部命令有自己的參數時,則需要使用雙引號把外部命令包起來,以和multitail的參數相區別。在第一個示例中,外部命令“ls”運行完畢以后MultiTail會自動關閉窗口。使用“-z”參數使MultiTail在外部程序結束以后,不彈出外部程序結束通知消息窗口,而是直接進入命令選單。和“-I file”類似,“-L command”參數同樣會將外部程序的輸出和其它文件或命令的輸出合并。
添加顏色
為方便用戶查看文件,MultiTail可以彩色顯示被監控的文件內容。以“-c”啟動MultiTail,MultiTail將會以彩色顯示“-c”后面所跟的文件。如果用戶希望在日志中查看某個特定程序的輸出內容,則可以選用“-cs”參數。“-cS colorscheme”參數則是指定使用哪種配色方案。配色方案是在multitail.conf文件中指定。默認情況下multitail.conf保存在/etc目錄下。在MultiTail中用戶可以使用規則表達式來定義配色方案,也可以使用“-z”指定其它配置文件。示例如下:
colorscheme:postfix
cs_re:yellow:status=sent
cs_re:magenta:queue active
第一行指定這是postfix文件的配色方案。“cs_re”表示該行定義了規則表達式和對應的顏色。“cs_re:yellow:status=sent”表示當MultiTail遇到文本“status=sent”時,就以黃色顯示該內容;“cs_re:magenta:queue active”則表示當遇到文本“queue active”時,就以紫紅色來顯示。
過濾文件
MultiTail還提供使用正則表達式來過濾文件內容的功能。為了保證兼容性,它使用了和“grep”命令類似的參數,以方便用戶使用。“-e”參數后指定一個正則表達式,“-v”表示反選,舉例如下:
#multitail -e“gnu-pop3d”/var/log/messages
#multitail -v -e“ssh”-v -e“gnu-pop3d”-e “localhost”/var/log/messages
第一個示例表示MultiTail僅僅顯示/var/log/messages中包含“gnu-pop3d”字串的行;第二個示例表示僅僅顯示不包含“ssh”和“gnu-pop3d”,但是包含“localhost”的行。