2017-07-13 12 views
1

私のbashスクリプトでは、/ var/log/messageログファイルからoutを監視しようとしていて、ファイルが回転しても再開して再開します。私はtail -f filenameを使ってみましたが、ファイルが回転しているときにこれがうまくいかないことをすぐに認識しました。busyboxを使ってログファイルを回転させているLinuxのテール

tail -F filenameまたはtail -f --retry filename(その他のいくつかの亜種)を使用すると、多くの回答があります。

しかし、私の組込みLinux上で私は尾の軽量バージョンを持っているのbusyboxを使用しています

tail [OPTIONS] [FILE]... 

Print last 10 lines of each FILE to standard output. With more than one 
FILE, precede each with a header giving the file name. With no FILE, or 
when FILE is -, read standard input. 

Options: 
     -c N[kbm]  Output the last N bytes 
     -n N[kbm]  Print last N lines instead of last 10 
     -f    Output data as the file grows 
     -q    Never output headers giving file names 
     -s SEC   Wait SEC seconds between reads with -f 
     -v    Always output headers giving file names 

If the first character of N (bytes or lines) is a '+', output begins with 
the Nth item from the start of each file, otherwise, print the last N items 
in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2). 

そのオプションが実装されていないので、だから私はいつもtail -F ...を行うことはできません。上記の文書スニペットは最新のビジーボックスバージョンです。私のものはもう少し古いものです。

したがって、ファイルが特定のサイズで上書きされるので、/ var/log/messagesを記録する別の方法が必要です。

私はいくつかの単純なbashラインを考えていました。だから、私は不潔なもののようなものを見たが、ビジーボックスはそれを持っていない。私はここで見ました:

busybox docsがあり、inotifydがありますが、私のバージョンはその特定のコマンドを持っていません。だから単純なLinuxコマンド/ watchtail -fcat/less/moreなどのコマンドの組み合わせでこれを行う巧妙な方法があれば私は迷っている...私は私が持っている限られたコマンドで何をする必要があるのか​​よく分かりません:(

+0

@jwwよく...それは非常に建設的ではない、「オフトピック」コールです。私は開発の一部と技術的にbashスクリプトの一部としてこれを必要とします。また、私が開発しようとしているコード(または行)の特定の行 - だから、bashスクリプトはコード/開発...考えですか? –

答えて

0

どのように回転ログです?あなたはlogrotateユーティリティを使用していますか? そうならば、あなたは設定ファイルにpostrotateセクションにあなたの行を追加しようとしました?

男logrotateのから

postrotate/endscript postrotateとendscriptの間の行(両方ともそのうち が行に表示される必要があります)は、ログファイル がローテーションされた後に実行されます。これらのディレクティブは、ログ定義ファイル の内部にのみ表示されます。プレローテートも参照してください。

+0

これはカーネルが私を特別にはしていない(すなわち '/ var/log/message'の中に) –

+0

あなたは組み込みLinuxを使っていますか? –

+0

@WayneVosberg uClinux with busybox –

関連する問題