In meinem Bash-Skript versuche ich, aus der Protokolldatei/var/log/Nachricht zu überwachen - und weiter, auch wenn die Datei rotiert (wird neu erstellt und neu gestartet). Ich versuchte mit tail -f filename
, aber schnell erkannte, dass dies nicht gut ist, wenn die Datei rotiert.Linux Schwanz auf rotierende Protokolldatei mit busybox
So gibt es viele Antworten für die Verwendung tail -F filename
oder tail -f --retry filename
(und ein paar andere Varianten).
Aber auf meinem Embedded Linux I Busybox verwenden, die eine leichte Version des Schwanzes hat:
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).
So kann sie die üblichen tail -F ...
nicht tun, da diese Option nicht implementiert ist. Das obige Dokument-Snippet ist die neueste Busybox-Version - und meine ist etwas älter.
Also brauche ich eine andere Möglichkeit der Protokollierung/var/log/messages, da die Datei in einer bestimmten Größe überschrieben wird.
Ich dachte an eine einfache Bash-Linie. Also habe ich Dinge wie inotifywait gesehen, aber busybox hat das nicht. Ich sah hier:
busybox docs und es gibt eine Inotifyd, aber meine Version hat nicht diesen bestimmten Befehl. Also bin ich am Wandern, wenn es eine schlaue Art gibt, dies mit einfachen Linux-Befehlen/Kombinationen von Befehlen wie watch
und tail -f
und cat/less/more
usw. zu tun. Ich kann nicht recht herausfinden, was ich mit den begrenzten Befehlen, die ich habe, tun muss :(
@jw well ... das ist ein schwaches "Off Topic" Call und nicht sehr konstruktiv. Ich würde das für einen Teil meiner Entwicklung brauchen und technisch Teil eines Bash-Skripts. Es ist auch eine bestimmte Codezeile (oder Zeilen), die ich versuche zu entwickeln - also denke ich, dass Sie nicht korrekt sind, da Bash-Skript auch Code/Entwicklung ist ... Gedanken? –