avi*_*ane 5 linux monitoring ptrace stderr
我想监视在我的 Linux 上运行的所有进程的 STDERR 通道。监控最好是实时进行(即在进程运行时),但也可以进行后处理。它应该在不需要 root 权限的情况下完成,并且不会破坏任何安全功能。
我进行了大量搜索,找到了一些实用程序,例如reptyr和 screenify,以及有关如何使用 gdb 执行此操作的一些说明(例如此处)。然而,所有这些似乎做得太多,也做得太少。从某种意义上说,他们完全控制了进程的流句柄(即关闭原始句柄并打开新句柄)。太少了,因为它们具有严重的局限性,例如需要禁用安全功能,例如 ptrace_scope。
任何建议将不胜感激!
也许这个问题在SU上会得到更多答案。我唯一能想到的就是监视已经作为 STDERR 打开的文件和设备。当然,如果 STDERR 被重定向到 /dev/null,这将不起作用。
您可以使用以下命令获取 STDERR 的所有文件描述符:
ls -l /dev/proc/[0-9]*/fd/2
如果您拥有该进程,则无需 root 即可使用您选择的语言访问其 STDERR 文件描述符或输出文件。