私の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コマンド/ watch
とtail -f
とcat/less/more
などのコマンドの組み合わせでこれを行う巧妙な方法があれば私は迷っている...私は私が持っている限られたコマンドで何をする必要があるのかよく分かりません:(
@jwwよく...それは非常に建設的ではない、「オフトピック」コールです。私は開発の一部と技術的にbashスクリプトの一部としてこれを必要とします。また、私が開発しようとしているコード(または行)の特定の行 - だから、bashスクリプトはコード/開発...考えですか? –