Httpd

使用 cgi 時跟踪 httpd

  • August 12, 2019

我已經配置 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 的此操作有什麼建議嗎?

看起來您正在跟踪錯誤的程序,或者至少是錯誤的執行緒。您需要使用(例如)指定所有httpd/apache2程序ID,以確保獲得正確的ID 。-p``strace -p 12345 -p 4321 -p 9876 <etc>

然而,這還不夠,因為為了執行外部腳本,Apache 會在執行腳本之前分叉。您需要將-f選項添加到您的strace呼叫中,以遵循新生成的程序。我還建議增加最大字元串長度(使用-o 10000)以確保您不會得到截斷的程序參數。

引用自:https://serverfault.com/questions/978967