Anzeigen von Systemkonsolenmeldungen in der GUI

10

Unter Linux ist es möglich, Fehlermeldungen anzuzeigen, die im GUI-Modus auf dem Textmodus-Terminal angezeigt werden, anstatt jedes Mal Ctrl+ Alt+ F1oder Ctrl+ Alt+ drücken F2zu müssen, um die Meldungen anzuzeigen, und dann durch Drücken von Ctrl+ Alt+ zum GUI-Modus zurückzukehren F7?

Vielen Dank.

Jay
quelle
Ich habe das Thema der Frage geklärt. Bash ist nur eine von vielen verschiedenen Shells für Linux. Die Nachrichten werden an die Entität gesendet, in der (z. B.) Bash ausgeführt wird, nicht an die Shell selbst.
fschmitt
Können Sie nicht einfach auf / var / log / "blah" zugreifen und das entsprechende Protokoll lesen? Angenommen, es befindet sich im Startvorgang, dann sehen Sie sich /var/log/boot.log
vfbsilva

Antworten:

6

Sie können den aktuellen Inhalt der Textkonsole /dev/tty1in der Datei sehen /dev/vcs1(wobei 1 die Zahl in Ctrl+ Alt+ ist F1). (Wenn Sie versuchen, von zu lesen /dev/tty1, konkurrieren Sie mit dem dort ausgeführten Programm um Tastatureingaben.) Die vcs-Geräte können normalerweise nur von root gelesen werden. Sie erhalten einen Schnappschuss; Es gibt keine bequeme Möglichkeit, Inhalte so zu erhalten, wie sie kommen.

Mit dem Programm ttysnoop können Sie den Datenverkehr auf einer Konsole von einem anderen Terminal (einschließlich eines X-Terminals) aus überwachen. Dies müssen Sie jedoch im Voraus einrichten.


Anstatt zu versuchen, die Nachrichten abzufangen, wenn sie auf der Textkonsole ausgegeben wurden, sorgen Sie dafür, dass die Nachrichten an einen anderen Ort geleitet werden. Die meisten dieser Konsolenausgaben landen in den Systemprotokollen in den Dateien unter /var/log. Unter X (dh im grafischen Modus) können Sie diese Nachrichten abfangen xconsole, was Teil der Standard-X-Verteilung ist.

Wenn xconsoledie gewünschten Nachrichten nicht angezeigt werden, bearbeiten Sie Ihre Frage, um anzugeben, woher diese Nachrichten stammen.

Wenn Sie xconsolekeine Meldung anzeigen können, bearbeiten Sie Ihre Frage so, dass sie Ihr genaues Betriebssystem, alle von Ihnen durchgeführten Konfigurationsschritte und die angezeigte Fehlermeldung enthält.


Wenn die Nachrichten nicht von der Systemprotokollierungsfunktion stammen, sondern von einem Programm, das Sie in der Textmoduskonsole gestartet haben, können Sie die Umleitung besser bedienen . Vereinbaren Sie, das Programm wie folgt zu starten:

mv ~/.myprogram.log ~/.myprogram.log.old
myprogram --with arguments 2>&1 >~/.myprogram.log

Dann können Sie die Ausgabe des Programms von überall lesen, indem Sie in die Datei schauen ~/.myprogram.log. Um zu sehen, wie die Datei in Echtzeit wächst, führen Sie sie aus

tail -n +1 -f ~/.myprogram.log

Wenn das Programm von Ihren X-Startskripten gestartet wird, ist es besser, die Ausgabe der gesamten X-Startsequenz in eine Datei umzuleiten. Tatsächlich tun dies viele Distributionen automatisch. Wenn Sie eine .xinitrcoder .xsession-Datei verwenden, setzen Sie die folgende Zeile am Anfang der Datei, um die Ausgabe von nachfolgenden Programmen umzuleiten:

exec >"$HOME/.xsession-$DISPLAY.log" 2>&
Gilles 'SO - hör auf böse zu sein'
quelle
Vielen Dank. Ich habe einfach su -c "cat / dev / vcs1" gemacht und es hat funktioniert. Und wie Sie bereits erwähnt haben, war es eine einfache Momentaufnahme der Nachrichten auf der Konsole, aber das war alles, was ich brauchte.
Jay
@Jay: Nachdem ich Ihre Kommentare gesehen habe, habe ich eine andere Antwort: Sie sollten die Umleitung in Ihren X-Startskripten verwenden. Ich lasse die anderen Möglichkeiten, weil sie für andere Personen, die im Fragenarchiv surfen, nützlich sein können.
Gilles 'SO - hör auf böse zu sein'
1

Sie können dafür xconsole verwenden. Aus seiner Beschreibung:

Das xconsole-Programm zeigt Nachrichten an, die normalerweise an / dev / console gesendet werden.

Je nach Konfiguration wählen Sie Ihre Verteilung Sie könnten es als root starten (dh mit sudo xconsolejeweils su -c xconsole),

fschmitt
quelle
Danke. Aber gibt es eine Möglichkeit, die Nachrichten anzuzeigen, die bereits auf der Konsole vorhanden sind, nachdem ich X gestartet habe? Wie zum Beispiel in meiner Situation. Ich habe ein Python-Skript geschrieben, um das Hintergrundbild zufällig zu ändern. Und ich habe es so eingerichtet, dass jedes Mal, wenn ich X starte, das Skript aufgerufen wird. Aber das Skript funktioniert nicht so, wie ich es möchte, und ich erhalte einige Fehlermeldungen auf der Konsole. Wenn ich xconsole starte, nachdem ich in X gekommen bin, kann ich nur Nachrichten sehen, die ab diesem Zeitpunkt an die Konsole gesendet werden. Die Manpage für xconsole sagt nichts über das Anzeigen von Nachrichten aus, die bereits auf der Konsole vorhanden sind
Jay
Sie können in jedem Terminalfenster (z. B. xterm) die während des Startvorgangs gedruckten Meldungen mit dem Befehl dmesg anzeigen.
fschmitt
dmesg zeigt nur die Meldungen an, die während des Startvorgangs angezeigt werden. Ich glaube nicht, dass es die Nachrichten anzeigt, die auf der Konsole erscheinen, nachdem ich hochgefahren und mich angemeldet habe und zum Beispiel "startx" mache.
Jay
1

Hast du es versucht xterm -C? Es funktioniert unter Ubuntu 17.04.

Erik Bennett
quelle
1
Es klingt kommentarwürdig, aber wenn Erik einen Kontext hinzufügen würde, scheint es eine plausible / mögliche Antwort zu sein: "-C Diese Option gibt an, dass dieses Fenster Konsolenausgabe empfangen soll. Dies wird nicht auf allen Systemen unterstützt. ...."
Jeff Schaller
Faire Punkte. Nächstes Mal werde ich einen Kommentar abgeben. Entschuldigen Sie die Unannehmlichkeiten.
Erik Bennett
-4

Wenn Sie die Konsolenmeldungen sehen möchten, können Sie am Ende von /etc/rc.local Folgendes einfügen:

sleep 60
Jose
quelle
2
Die OP will die Nachrichten sehen , nachdem die GUI geladen zu haben. Dadurch wartet das System vor dem Laden einfach eine Minute, sodass es keine Lösung darstellt.
Terdon