Tail -f zuletzt geänderte Datei im Ordner

Tail -f zuletzt geänderte Datei im Ordner

Ich versuche, tail -feine Protokolldatei in einem bestimmten Ordner zu verfolgen. Ich kann das mit dem einfachen Befehl tun, tail -f [path to file]aber gibt es eine Möglichkeit, einen Befehl zu haben, der ausgeführt wird und die neueste/zuletzt geänderte Datei in einem Ordner verfolgt? Ich bin auf diesem Gebiet keineswegs ein Experte, daher ist jede Hilfe sehr willkommen.

Antwort1

Sie können die ls -tp | sort | grep -v / | tail -n 1Befehle ausführen und diese durch einenforSchleife, um den tail -FBefehl dann nur für die neueste Datei auszuführen und sie auf Inhaltsänderungen zu überwachen. Sie können ls -tpr | grep -v / | tail -n 1stattdessen auch die Befehle in Betracht ziehen.

for VAR in $(ls -tp | sort | grep -v / | tail -n 1); do tail -F $VAR; done

oder

for VAR in $(ls -tpr | grep -v / | tail -n 1); do tail -F $VAR; done

Weitere Ressourcen

  • ls

       -t     sort by modification time, newest first
    
       -p, --indicator-style=slash
              append / indicator to directories
    
       -r, --reverse
              reverse order while sorting
    
  • sort

  • grep

    -v, --invert-match
    Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
    
  • tail

      -n, --lines=[+]NUM
              output the last NUM lines, instead of the last 10; or use -n
              +NUM to output starting with line NUM
    

Antwort2

Du könntest benutzen Mehrschwänzig, als Standardpaket auf vielen Distributionen verfügbar.

Beispiel 1: Zwei Logdateien in einem Fenster mit unterschiedlichen Farben zusammenführen

multitail -ci green /var/log/yum.log -ci yellow -I /var/log/mysqld.log

Bildbeschreibung hier eingeben

Beispiel 2: Anzeige von fünf Logdateien, Zusammenführung von zwei in einer Spalte

 multitail -s 2 -sn 1,3  /var/log/mysqld.log -I /var/log/xferlog /var/log/monitorix /var/log/ajenti.log /var/log/yum.log

Bildbeschreibung hier eingeben

Quelle: MultiTail – Mehrere Dateien gleichzeitig in einem einzigen Linux-Terminal überwachen.

verwandte Informationen