web-dev-qa-db-ja.com

ログファイルの最後のn行だけを監視する方法は?

表示したいログファイルが増えていますonly最後の15行。これが私ができることがわかっていることです:

tail -n 15 -F mylogfile.txt

ログファイルがいっぱいになると、tailは最後の行を表示に追加します。

最後の15行のみを表示し、更新後の最後の15行より前の行を削除するソリューションを探しています。アイデアはありますか?

117

時計を使用するだけで十分な場合があります。

 $ watch tail -n 15 mylogfile.txt 
160
William Pursell

時計を使用している場合は、-n各更新の間隔を制御するオプション。

したがって、次は2秒ごとにtailを呼び出します

$ watch -n 2 tail -n 15 mylogfile.txt

これは1秒ごとにポーリングしますが

$ watch -n 1 tail -n 15 mylogfile.txt
25
Turgon

ログファイルのストリーミングを減らして実行し、SHIFT + Fを押すと、lessを使用してファイルをストリーミングできます。 $ less mylogfile.txt次に、SHIFT + Fを押すだけでストリーミングされます。更新されるログファイルの監視に便利だと思います。

13
Niklas

多分あなたは-dパラメータが便利だと思うでしょう。

man watch

-d連続する更新の違いを強調表示します。オプションは、ハイライトを永続的に変更するオプションの引数を読み取り、最初の反復以降に少なくとも1回変更されたものを確認できるようにします。

8
michalzuber

Solaris、AIX、HPUX、またはUNIXライク(Linuxを含む)では、スクリプトを使用してログなどを監視できます。

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
0
João Gerardo