GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Shell-Befehl zum Überwachen von Änderungen in einer Datei

Lösung 1:

Meinst du

tail -f logfile.log

?

(Manpage für Schwanz)

Lösung 2:

Sie meinten wahrscheinlich Schwanz, gemäß Jon Skeets Antwort.

Ein weiterer nützlicher ist die Uhr; Es ermöglicht Ihnen, einen Befehl regelmäßig auszuführen und die Ausgabe im Vollbildmodus anzuzeigen. Zum Beispiel:

watch -n 10 -d ls -l /var/adm/messages

Führt den Befehl ls -l /var/adm/messages aus alle 10 Sekunden, und heben Sie den Unterschied in der Ausgabe zwischen aufeinanderfolgenden Läufen hervor. (Nützlich, um beispielsweise zu beobachten, wie schnell eine Protokolldatei wächst).

Lösung 3:

inotifywait von inotify-tools ist nützlich, wenn Sie jedes Mal einen Befehl ausführen möchten, wenn sich eine Datei (oder eine beliebige Datei in einem Verzeichnis) ändert. Zum Beispiel:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

Lösung 4:

Ich bevorzuge die Verwendung von less +FG über tail -f weil ich feststellen muss, dass ich eine Protokolldatei nach einem bestimmten Fehler oder einer bestimmten ID durchsuchen muss. Wenn ich etwas suchen muss, tippe ich ^C ein um der Datei nicht mehr zu folgen und ? um rückwärts zu suchen.

Tastenbelegungen sind so ziemlich die gleichen wie in vi . Jeder Befehl kann beim Start mit + initialisiert werden Möglichkeit:

+cmd   Causes  the  specified  cmd  to be executed each time a new file is
       examined.  For example, +G causes less to  initially  display  each
       file starting at the end rather than the beginning.

Für wirklich lange Protokolle finde ich es praktisch, den -n zu verwenden Option, die die Zeilennummerierung ausschaltet. Aus der Manpage:

-n or --line-numbers
          Suppresses line numbers.  The default (to use line numbers)  may
          cause  less  to run more slowly in some cases, especially with a
          very large input file.  Suppressing line  numbers  with  the  -n
          option  will  avoid this problem.  Using line numbers means: the
          line number will be displayed in the verbose prompt and in the =
          command,  and the v command will pass the current line number to
          the editor (see also  the  discussion  of  LESSEDIT  in  PROMPTS
          below).

1. Hut-Tipp an rgmarcha für den Hinweis in den Kommentaren.

Lösung 5:

Tail ist großartig ... less kann auch verwendet werden start less auf der Datei, d.h. less myfile, dann drücke Shift +F . Dies hat weniger Wirkung als Schwanz.


Linux
  1. Welche Änderungen finden in der Festplatte statt, wenn wir Mv Command verwenden?

  2. Doppelte Datei x Mal in der Befehlsshell?

  3. Linux-wc-Befehl

  4. Linux weniger Befehl

  5. Wie führe ich einen Befehl aus, wenn sich eine Datei ändert?

Stat-Befehl unter Linux

Quellbefehl unter Linux

So überwachen Sie Dateiänderungen mit fswatch unter Linux

So leiten Sie die Shell-Befehlsausgabe um

Kommando-Shell

Was ist eine .sh-Datei?