Назад | Перейти на главную страницу

Трассировать httpd при использовании cgi

Я настроил httpd (apache2.4.6) cgi для запуска сценариев / bin / bash. Я хотел бы отследить httpd-вызовы / bin / bash и увидеть фактическую выполняемую команду. До сих пор я пытался использовать strace -p, но по какой-то причине вижу только: wait4 (-1, 0x7ffeef137dfc, WNOHANG | WSTOPPED, NULL) = 0 select (0, NULL, NULL, NULL, {1, 0}) = 0 (Тайм-аут)

И нет конкретного вывода при загрузке URI, который предоставляет вывод cgi. У вас есть рекомендации, как отследить эти действия httpd?

Похоже, вы отслеживаете неправильный процесс или, по крайней мере, не тот поток. Вам нужно будет указать все то httpd / apache2 идентификаторы процессов с -p (например strace -p 12345 -p 4321 -p 9876 <etc>), чтобы быть уверенным, что выберете нужный.

Однако этого недостаточно, потому что для запуска внешнего сценария Apache выполнит форк, прежде чем он выполнит сценарий. Вам нужно будет добавить -f вариант для вашего strace вызов для отслеживания вновь порожденных процессов. Я также рекомендовал бы увеличить максимальную длину строки (с -o 10000), чтобы гарантировать, что вы не получите усеченные аргументы процесса.