Process 从solaris中已经运行的进程捕获stderr和stdout

Process 从solaris中已经运行的进程捕获stderr和stdout,process,solaris,stdout,stderr,Process,Solaris,Stdout,Stderr,我有一个当前正在运行的进程(arserverd),该进程是由用户“remedy”启动的。我可以作为此用户登录。我想在不重新启动进程的情况下捕获stderr和stdout。这可能吗?我不这么认为,但您可以尝试从stdout的/proc/PID/fd/1和stderr的/proc/PID/fd/2中读取(将PID替换为进程的PID)。如果进程已经在运行,您可以使用truss命令拦截对文件描述符1或2的写入: truss -w 1,2 -p pid_of_arserverd Truss将输出如下所示

我有一个当前正在运行的进程(arserverd),该进程是由用户“remedy”启动的。我可以作为此用户登录。我想在不重新启动进程的情况下捕获stderr和stdout。这可能吗?

我不这么认为,但您可以尝试从stdout的
/proc/PID/fd/1
和stderr的
/proc/PID/fd/2
中读取(将
PID
替换为进程的PID)。

如果进程已经在运行,您可以使用
truss
命令拦截对文件描述符1或2的写入:

truss -w 1,2 -p pid_of_arserverd
Truss将输出如下所示的线

write(1, " m e s s a g e\n", 8)                     = 8
Truss是特定于Solaris的。在linux系统上,寻找
strace

Truss会在一定程度上减慢你进行trusing的过程,所以你不想一直使用Truss。如果您正在寻找一个永久性的解决方案,那么最好的办法可能是在启动程序时将stdout和stderr重定向到一个文件。您可以定期截断文件以保持其大小可控。另一种方法是在
屏幕
会话中运行程序,当您想要与程序交互时,可以重新连接到该会话