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?
Antworten
Zu viele Anzeigen?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.