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