使用 cgi 时跟踪 httpd

使用 cgi 时跟踪 httpd

我已经配置了 httpd (apache2.4.6) cgi 来运行 /bin/bash 脚本。我想跟踪 /bin/bash 的 httpd 调用并查看实际运行的命令。到目前为止,我尝试使用 strace -p,但出于某种原因,我只看到:wait4(-1, 0x7ffeef137dfc, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (超时)

加载提供 cgi 输出的 URI 时没有特定输出。您对如何跟踪 httpd 的此操作有什么建议吗?

答案1

看起来你正在跟踪错误的进程,或者至少是错误的线程。你需要指定全部httpd/apache2进程ID (-p例如strace -p 12345 -p 4321 -p 9876 <etc>)以确保获取正确的进程ID。

但是,这还不够,因为为了运行外部脚本,Apache 会在执行脚本之前进行分叉。您需要将选项添加-f到调用中strace,以便跟踪新生成的进程。我还建议增加最大字符串长度(使用-o 10000),以确保您不会获得截断的进程参数。

相关内容