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

Zur Anzeige an eine Prozessausgabe anhängen

Ich denke, ich habe hier eine einfachere Lösung. Suchen Sie einfach unter dem unter /proc erreichbaren Pseudo-Dateisystem nach einem Verzeichnis, dessen Name der gesuchten PID entspricht Weg. Wenn Sie also ein Programm ausführen, dessen ID 1199 ist, cd hinein:

$ cd /proc/1199

Suchen Sie dann nach fd Verzeichnis darunter

$ cd fd

Diese fd Verzeichnis enthalten die Dateideskriptoren-Objekte, die Ihr Programm verwendet (0:stdin, 1:stdout, 2:stderr) und nur tail -f die, die Sie brauchen - in diesem Fall stdout):

$ tail -f 1

Ich habe genau das Gleiche gesucht und festgestellt, dass Sie Folgendes tun können:

strace -ewrite -p $PID

Es ist nicht genau das, was Sie brauchen, aber es kommt ziemlich nahe.

Ich habe versucht, die Ausgabe umzuleiten, aber das hat bei mir nicht funktioniert. Vielleicht, weil der Prozess in einen Socket geschrieben hat, ich weiß es nicht.


Bei mir hat das funktioniert:

  1. Melden Sie sich als Eigentümer des Prozesses an (auch root wird die Erlaubnis verweigert)

    ~$ su - process_owner
    
  2. Beenden Sie den Dateideskriptor, wie in vielen anderen Antworten erwähnt.

    ~$ tail -f /proc/<process-id>/fd/1 # (0: stdin, 1: stdout, 2: stderr)
    

Hier gibt es einige Optionen. Eine besteht darin, die Ausgabe des Befehls in eine Datei umzuleiten und dann 'tail' zu verwenden, um 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 textbasierter Terminalanwendung. Bildschirmsitzungen können angehängt und getrennt werden, sind aber nominell nur für die Verwendung durch denselben Benutzer gedacht. Wenn Sie sie also zwischen Benutzern teilen möchten, ist dies ein großer Schmerz im Arsch.


Linux
  1. Anzeigen der vollständigen Ausgabe des PS-Befehls

  2. Keine Manpage für den cd-Befehl

  3. Wie chown ich das Verzeichnis für mehrere Benutzer?

  4. Alternative für tail -f, das auf Dateiname folgt

  5. 'tail -f' für eine bestimmte Zeit

Erstellen Sie ein Home-Verzeichnis für einen bestehenden Benutzer in Linux

Linux-Verzeichnisstruktur für Anfänger erklärt

Befehle für das Prozessmanagement in Linux

Schwanzausgabe einfärben

Was gibt pwd aus?

ls hängt für ein bestimmtes Verzeichnis