Ich habe eine Terminalausgabe, die mehreren Benutzern zur Verfügung stehen soll
derzeit sowas wie:
command > /var/logs
für die Eingabe und:
watch tail -30 /var/logs
für die Eingangsanschlüsse.
Dies ist jedoch unerwünscht, da „watch“ nur Abfragen durchführt und keine Ausgabe bei Aktualisierungen vornimmt, und „tail“ kein Zurückscrollen zulässt.
Antwort1
Sie stellen zwei Probleme:
Beobachten Sie nur Umfragen, anstatt sie auszugeben, wenn es Updates gibt
tail -f
führt keine Abfrage durch. Ab Version 7.5 von GNU Coreutils tail -f
wird die Schnittstelle des Linux-Kernels verwendet, inotify
um Signale vom Kernel zu empfangen, die anzeigen, dass die Datei geändert wurde. Wenn Sie GNU Coreutils nicht verwenden oder aus irgendeinem Grund eine Version verwenden, die älter als 7.5 ist, wird einmal pro Sekunde eine Abfrage durchgeführt. Es führt wahrscheinlich auch eine Abfrage auf Nicht-Linux-POSIX-Betriebssystemen (BSD, Solaris usw.) durch, aber Sie müssten dies von Fall zu Fall prüfen: Einige dieser Betriebssysteme verwenden GNU Coreutils, aber der Kernel unterstützt dies nicht inotify
; einige von ihnen verwenden GNU Coreutils zur Implementierung tail
überhaupt nicht.
tail erlaubt kein Scrollback
Der less
Befehl ist speziell dafür gedacht, Daten stdin
(z. B. aus dem tail
Befehl) zu puffern und Ihnen das Vor- und Zurückblättern zu ermöglichen. Der Puffer ist nicht unbegrenzt, aber Sie können Befehlszeilenoptionen verwenden, um den Puffer zu vergrößern oder zu verkleinern sowie die Pufferlänge für das Zurück- und Vorwärtsblättern zu ändern.
Also so etwas wie vielleicht
tail -f /var/logs | less
würde es Ihnen ermöglichen, einen Scrollback-Puffer der Protokolle ohne Abfrage beizubehalten ( tail
sitzt einfach im Leerlauf da und verbraucht keine CPU, bis der Kernel ihm ein Signal sendet und ihn darüber informiert, dass die Datei geändert wurde).
Wenn mehrere Benutzer aus demselben Puffer lesen können müssen, können Sie dies einfach tail -f /var/logs
innerhalb einer screen
Sitzung ausführen. In meiner ursprünglichen Antwort wurde nicht berücksichtigt, dass Sie dies ausführen möchten, damit mehrere Benutzer gleichzeitig dieselben Protokolldaten sehen können. @Let_Me_Be hat es erwähnt screen
und dann ist mir eingefallen, dass dies wahrscheinlich Ihre beste Option ist.
Wenn ich also meine Lösung und die Lösung von @Let_Me_Be zusammenfasse:
screen -mdS logview -- tail -f /var/logs
Achtung: Ungetestet. Bitte bearbeiten, wenn es falsch ist. Aber ich denke, wir sind hier einer richtigen Lösung nahe.
Jetzt müssen Sie nur noch screen
den Mehrbenutzermodus aktivieren. Das ist ein wenig kompliziert, deshalb lasse ichDasmultiuser on
Website spricht für sich. Das Wesentliche ist, dass Sie zu Ihrer ~/.screenrc
Datei hinzufügen müssen . Siehe auch dieAllgemeine Problemeam Ende dieses Links.
So können Benutzer das Protokoll jetzt anzeigen:
screen -rS logview
Sollte es tun.
Antwort2
Sie möchten ein Programm wie screen
oder tmux
.