Strace нескольких процессов одновременно

Иногда бывает так что, на первый взгляд, начинает без причины падать apache, или php-fpm. Никакие CoreDump в этом могут не помогать. Часто этот процесс представляет собой связку процессов и мониторить их необходимо все, так как заранее неизвестно, каким из процессов будет отработан наш запрос. На этот случай strace умеет принимать набор pid’ов процессов, на каждый процесс свой аргумент -p. Получаем список всех процессов по имени: 1 pidof apache2 Собираем список аргументов: 1 pidof apache2 | sed 's/\([0-9]*\)/\-p \1/g' Вызываем strace: 1 strace -s 1024 -f $(pidof apache2 | sed 's/\([0-9]*\)/\-p \1/g') На CentOS имя процесса другое: 1 strace -s 1024 -f $(pidof httpd | sed 's/\([0-9]*\)/\-p \1/g') Для трейса php-cgi процессов команда будет следующая: 1 strace -s 1024 -f $(pidof php5-cgi | sed 's/\([0-9]*\)/\-p \1/g') А вот более гибкий вариант для выборки процессов по регулярному выражению: 1 strace -s 1024 -f $(pgrep php5-fastcgi | sed 's/\([0-9]*\)/\-p \1/g') А для Nginx: 1 strace -s 1024 -f $(pidof nginx | sed 's/\([0-9]*\)/\-p \1/g') Для php5-fpm: 1 strace -s 1024 -f $(pidof php5-fpm | sed 's/\([0-9]*\)/\-p \1/g') Для Apache wsgi: 1 strace -s 1024 -f $(ps aux|grep wsgi|grep -v 'grep'|awk '{print $2}'| sed 's/\([0-9]*\)/\-p \1/g')

11 серпня 2017 · 1 хвилина · 192 слів · dimetrius