Gibt es eine Möglichkeit, Tail 2-Dateien zu entfernen?
Ich habe zwei Server (a und b) hinter einem Load Balancer und möchte nach Möglichkeit so etwas tun:
tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log
Vielen Dank!
Gibt es eine Möglichkeit, Tail 2-Dateien zu entfernen?
Ich habe zwei Server (a und b) hinter einem Load Balancer und möchte nach Möglichkeit so etwas tun:
tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log
Vielen Dank!
Antworten:
Das hat bei mir funktioniert:
ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &
Ctrl+C
.
fg
. dann kannst du ctrl+c
es. Du würdest das einmal für jeden Schwanz tun, den du laufen hast. Oder Sie können pkill -f ssh
alle gleichzeitig anvisieren.
Meine bevorzugte Option ist Multitail. Ich würde so etwas wie laufen:
multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'
Operation not permitted
Mit 2 bis 3 Webknoten ist dies in Ordnung
Operation not permitted
, irgendwelche Hinweise?
Sie können Fabric verwenden, um mehrere Hosts mit einem Tail zu versehen (und bei Bedarf auch Grep-Ergebnisse):
$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR
Ich dachte, es könnte auch möglich sein, Folgendes zu verwenden:
ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &
Mit der Option -f nach ssh können Sie ein Kennwort eingeben, bevor es im Hintergrund ausgeführt wird. Dann könnten Sie die zeilenweisen Ergebnisse in einer einzigen Datei haben und ausführen:
tail -f /tmp/somefile
Würde Ihnen ein wenig mehr Kontrolle über den aktuellen Befehl "tail" geben, falls Sie andere Optionen für die Anzeige der Ausgabe verwenden möchten.
Schauen Sie sich diese Antwort auf stackoverflow an - sie verwendet dsh und tail -f.
Schauen Sie sich Multitail an . Genau wie in den obigen Beispielen können Sie es als Befehl an ssh übergeben. Anschließend werden auf einem Bildschirm mehrere Protokolle angezeigt (und gepuffert, um einen einfachen Bildlauf zu ermöglichen). Es färbt auch, was sehr nützlich ist, um Anomalien zu erkennen.
Parallel ssh hat dafür eine schöne Lösung:
pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
-t0
deaktiviert das Verbindungs-Timeout, andernfalls hat pssh die Verbindung geschlossen-H '<host>...'
ist die Liste der Hosts, auf denen der Befehl ausgeführt werden soll-P
soll das Drucken der Standardausgabe jedes Hosts ermöglichentail -f /var/log/app.log
kann ein beliebiger Befehl sein, den Ihre Remote-Shell ausführen kannWas würdest du dazu sagen? http://gist.github.com/303175
Nur eine seltsame Lösung, aber es funktioniert !:
Bildschirm 1
ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6
Bildschirm 2
ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6
who am i
und es wird es Ihnen zeigen.)
Sie können dbitail auschecken.
Ein von mir erstelltes Java-Tool, das lokale und entfernte Protokolldateien mit SSH lesen kann. Es ist ziemlich einfach zu bedienen.
Weitere Erklärungen: https://github.com/pschweitz/DBITail/wiki
Laden Sie einfach die Ihrem Betriebssystem entsprechende Version der in Ihrer Java Runtime ausführbaren JAR-Version herunter (erfordert Java 8_40 oder höher):
https://github.com/pschweitz/DBITail/releases
Sie finden eine vollständige Dokumentation (eingebettet in die Seite von und I Github).
Philippe
Oder Sie können screen verwenden, um zwei Terminals zu erstellen und sie dann zu teilen.
SSH auf dem ersten Host, auf dem Sie die Protokolldatei mit einem Tail versehen möchten, und bevor Sie tail ausführen, rufen Sie den Bildschirm auf.
Dann die Datei auf diesem Host abschließen.
STRG + A, c erstellt einen neuen Bildschirm oder ein neues Fenster. Aus diesem neuen Fenster ssh in den 2. Host und dort die Datei tailen.
Erstellen Sie nun den geteilten Bildschirm
STRG + A, UMSCHALT + S, dies erzeugt einen geteilten Bildschirm mit der aktuellen Shell im oberen Teil und dem leeren unteren Teil. Um zum unteren Teil zu wechseln und den ersten Bildschirm darin zu platzieren,
STRG + A, TAB, dadurch gelangen Sie zum unteren Teil. Bringen Sie jetzt Ihre erste SSH-Sitzung in diesen Bereich:
STRG + A, "(Anführungszeichen) und wählen Sie die erste Sitzung aus und drücken Sie die Eingabetaste.
Mir ist klar, dass dies wie eine Menge Gymnastik aussieht, und das ist es auch, aber Sie gewöhnen sich daran, wenn Sie es ein paar Mal benutzen.
Hier finden Sie ein wirklich gutes Tutorial oder eine Kurzanleitung zu den Bildschirmbefehlen: http://www.pixelbeat.org/lkdb/screen.html
Darüber hinaus können Sie eine .screenrc-Datei erstellen, damit vieles, was ich beschrieben habe, beim ersten Aufrufen des Bildschirms automatisiert werden kann.
Eine weitere nette Sache dabei ist, dass Sie Ihre Sitzung einfach schließen und an einem anderen Ort fortsetzen können. Zum Beispiel sind Sie auf der Arbeit und haben einige Überwachungsarbeiten im Gange. Sie können Ihre Sitzung einfach schließen, ohne sich abzumelden, und die Sitzung fortsetzen, wenn Sie zu Hause oder an einem anderen Ort sind.
Sie können Dateien remote mit bash und rsync bearbeiten. Ich verwende es und es ist ein großartiges Bash-Skript. Schauen Sie sich das folgende Tutorial an