如何访问分离进程的 Stdout / Stderr?

如何访问分离进程的 Stdout / Stderr?

我有一个在后台运行(分离)的 php-cli 脚本。

有没有办法附加到它的 Stdout/Stderr 以查看应用程序的输出?

答案1

您可能可以使用 来做到这一点gdb。我写了这个过程在回答一个模糊相关的问题时。

答案2

我喜欢使用 strace,它比 GDB 稍微不那么吓人一些。

strace -s 100000 -e write=1  -e trace=write -p $PID 2>&1 | \
   sed 's/^write(1, //;t;d'

答案3

杜普克斯是实现@quack 所指的完整解决方案:

Dupx 是一个简单的实用程序,用于重新映射已运行程序的文件。使用 > 启动程序时,Bash 等 Shell 允许轻松进行输入/输出/错误重定向,/tmp/stdout 会将 echo 的输出重定向到 /tmp/stdout。但是,标准 Shell 不提供重新映射(重定向)已启动进程的输出(或输入或错误)的功能。Dupx 尝试通过使用 gdb(1) 内部的 dup(2) 系统调用来解决此问题。Dupx 目前是作为 gdb 脚本的简单 Shell 包装器实现的。

相关内容