Wie würde ich eine Konsolen- / Terminalansicht an eine Anwendungsausgabe anhängen, damit ich sehen kann, was sie möglicherweise sagt?
Wie würde ich mich von einer Anwendungsausgabe trennen, ohne die Anwendung zu beenden?
Wenn Sie eine gesprächige Anwendung über die Befehlszeile starten, sehen Sie normalerweise alle Arten von wunderbaren Ausgaben. Nehmen wir jedoch an, ich habe eine besonders gesprächige Programmierung wie KINO und möchte die Ausgabe jederzeit anzeigen, ohne sie über die Befehlszeile neu zu starten. Ich kann nicht; Zumindest weiß ich nicht wie.
linux
logging
command-line-interface
Aggitan
quelle
quelle
Antworten:
Hier gibt es einige Möglichkeiten. Eine besteht darin, die Ausgabe des Befehls in eine Datei umzuleiten und dann mit 'tail' neue Zeilen anzuzeigen, die dieser Datei in Echtzeit hinzugefügt werden.
Eine andere Möglichkeit besteht darin, Ihr Programm innerhalb von 'screen' zu starten, einer Art textbasierten Terminal-Anwendung. Bildschirmsitzungen können angehängt und getrennt werden, sind jedoch nominell nur für den Gebrauch durch denselben Benutzer gedacht. Wenn Sie sie also zwischen Benutzern teilen möchten, ist dies ein großes Problem.
quelle
Ich denke, ich habe hier eine einfachere Lösung. Suchen Sie einfach unter dem Pseudodateisystem, auf das Sie unter dem
/proc
Pfad zugreifen können, nach einem Verzeichnis, dessen Name der gesuchten PID entspricht . Wenn Sie also ein Programm mit der ID 1199 ausführen, wird Folgendes ausgeführtcd
:Suchen Sie dann nach dem
fd
Verzeichnis darunterDieses
fd
Verzeichnis enthält die Dateideskriptorobjekte, die Ihr Programm verwendet (0: stdin, 1: stdout, 2: stderr) und genautail -f
das, was Sie benötigen - in diesem Fall stdout):quelle
tail
da in meinem Fall die Ausgabe zur Eingabe an einen anderen Prozess umgeleitet wurde,more
zeigte mir jedoch die aktuellen Daten.more
arbeitet für mich. Ubuntu 14.04 auf einem KnotenprozessIch habe genau das Gleiche gesucht und festgestellt, dass Sie Folgendes tun können:
Es ist nicht genau das, was Sie brauchten, aber es ist ziemlich nah.
Ich habe versucht, die Ausgabe umzuleiten, aber das hat bei mir nicht funktioniert. Vielleicht, weil der Prozess in eine Steckdose schrieb, weiß ich es nicht.
quelle
Zu dieser Frage weiß ich, dass es möglich ist, die Ausgabe abzufangen, selbst wenn Sie den Befehl sceen vor dem Starten des Prozesses nicht gestartet haben.
Obwohl ich es nie ausprobiert habe, habe ich einen interessanten Artikel gefunden, in dem erklärt wird, wie GDB verwendet wird (und ohne den Prozess neu zu starten).
Umleiten der Ausgabe von einem laufenden Prozess
Grundsätzlich:
Übrigens, wenn Sie ein Linux-Betriebssystem unter i386 ausführen, sprechen Kommentare von einem besseren Tool, um die Ausgabe auf eine neue Konsole umzuleiten: 'retty' . Wenn ja, ziehen Sie die Verwendung in Betracht.
quelle
Für mich hat das funktioniert:
Melden Sie sich als Eigentümer des Prozesses an (sogar
root
die Erlaubnis wird verweigert)Beenden Sie den Dateideskriptor wie in vielen anderen Antworten erwähnt.
quelle
Ich wollte einen lokal ausgeführten Yum-Upgrade-Prozess aus der Ferne verfolgen. Obwohl es wahrscheinlich effizientere Möglichkeiten gab, dies zu tun, habe ich Folgendes getan:
Natürlich möchten Sie vcsa2, vcsa3 usw. verwenden, je nachdem, welches Terminal verwendet wurde.
Solange mein Terminalfenster dieselbe Breite hatte wie das Terminal, auf dem der Befehl ausgeführt wurde, konnte ich alle zwei Sekunden einen Schnappschuss der aktuellen Ausgabe sehen. Die anderen an anderer Stelle empfohlenen Befehle funktionierten für meine Situation nicht besonders gut, aber dieser hat den Trick gemacht.
quelle