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

Tail-Log-Datei auf mehreren Rechnern über ssh

Was Sie sehen, ist der Effekt eines Standard-Stdout-Puffers in grep bereitgestellt von Glibc. Die beste Lösung ist, es mit --line-buffered zu deaktivieren (GNU grep, ich bin mir nicht sicher, welche anderen Implementierungen es oder ähnliches unterstützen könnten).

Zum Warum dies passiert nur in einigen Fällen:

ssh server "tail -f /var/log/server.log | grep test"

führt den gesamten Befehl in Anführungszeichen auf dem Server aus - also grep wartet darauf, seinen Puffer zu füllen.

ssh server tail -f /var/log/server.log | grep test

führt grep aus auf Ihrem lokalen Rechner an der Ausgabe tail über den ssh-Kanal gesendet.

Der Schlüsselteil hier ist, dass grep passt sein Verhalten an, je nachdem, ob sein stdin ist ein Terminal oder nicht. Wenn Sie ssh -t ausführen , läuft der Remote-Befehl mit einem steuernden Terminal und damit der Remote grep verhält sich wie Ihr lokaler.


sieh dir das an:multitail

Mit MultiTail können Sie Protokolldateien und Befehlsausgaben in mehreren Fenstern in einem Terminal überwachen, einfärben, filtern und zusammenführen.

Um Protokolle auf mehreren Servern zu verfolgen, verwenden Sie:

multitail -l 'ssh [email protected] "tail -f /path/to/log/file"' -l 'ssh [email protected] "tail -f /path/to/log/file"'

Linux
  1. Ssh – Häufiges Problem bei der Dateiverarbeitung mehrerer SSH-Verbindungen?

  2. Ausführen einer Skriptdatei über SSH durch Sudo?

  3. Was ist eine bequeme Möglichkeit, in Echtzeit zu überprüfen, was zu einer Protokolldatei hinzugefügt wird?

  4. Firefox-Protokolldatei finden?

  5. Grep und Schwanz -f?

Linux-Tail-Befehl

SSHFS:Mounten eines Remote-Dateisystems über SSH

3 Methoden zum Anzeigen der tail -f-Ausgabe mehrerer Protokolldateien in einem Terminal

Wie grep \n in Datei

Verwendung desselben privaten SSH-Schlüssels auf mehreren Computern

Kopieren Sie Daten über mehrere Hops durch den SSH-Tunnel