2 Stimmen

stderr und stdout eines bereits laufenden Prozesses unter Solaris aufzeichnen

Ich habe einen Prozess, der derzeit läuft (arserverd) und vom Benutzer "remedy" gestartet wurde. Ich kann mich als dieser Benutzer anmelden. Ich würde gerne stderr und stdout aufzeichnen, ohne den Prozess neu zu starten. Ist dies möglich?

4voto

Kenster Punkte 20437

Wenn der Prozess bereits läuft, können Sie die Funktion truss Befehl, um Schreibvorgänge in Dateideskriptor 1 oder 2 abzufangen:

truss -w 1,2 -p pid_of_arserverd

Truss gibt Zeilen aus wie

write(1, " m e s s a g e\n", 8)                     = 8

Truss ist spezifisch für Solaris. Auf Linux-Systemen suchen Sie nach strace stattdessen.

Truss verlangsamt den Prozess des Trussings etwas, so dass man es nicht die ganze Zeit verwenden sollte. Wenn Sie nach einer dauerhaften Lösung suchen, ist es wahrscheinlich am besten, stdout und stderr in eine Datei umzuleiten, wenn Sie das Programm starten. Sie können die Datei regelmäßig kürzen, um ihre Größe überschaubar zu halten. Eine Alternative ist, das Programm innerhalb einer screen Sitzung, mit der Sie sich wieder verbinden können, wenn Sie mit dem Programm interagieren möchten.

0voto

Aaron Digulla Punkte 308693

Ich glaube nicht, aber Sie können versuchen, aus /proc/PID/fd/1 für stdout und /proc/PID/fd/2 für stderr (ersetzen PID mit der PID des Prozesses).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X