c ~ $ strace -f -s 128 $(pidof httpd |sed 's/\([0-9]*\)/\-p \1/g')

Quite simple really, just use sed to make the necessary command line switches.

strace wants to have the PIDs passed one per '-p' switch. It would be nice to have a -p 3434,4565,4342 option but oh
well. sed with a easy replace handles all that's necessary.

Observe the output of pidof

c ~ $ pidof httpd
9629 9439 9428 9427 9426 9425 9424 9420

Wrap with sed to create multiple -p switches.

c ~ $ pidof httpd |sed 's/\([0-9]*\)/\-p \1/g'
-p 9629 -p 9439 -p 9428 -p 9427 -p 9426 -p 9425 -p 9424 -p 9420

Now combine with strace.

c ~ $ strace $(pidof httpd |sed 's/\([0-9]*\)/\-p \1/g')
carbon share # strace $(pidof apache2 |sed 's/\([0-9]*\)/\-p \1/g')
Process 9629 attached - interrupt to quit
Process 9439 attached - interrupt to quit
Process 9428 attached - interrupt to quit
Process 9427 attached - interrupt to quit
Process 9426 attached - interrupt to quit
Process 9425 attached - interrupt to quit
Process 9424 attached - interrupt to quit
Process 9420 attached - interrupt to quit
[pid 9439] semop(10846209, 0xb7bd9a28, 1
[pid 9629] semop(10846209, 0xb7bd9a28, 1
[pid 9428] epoll_wait(10,
[pid 9427] semop(10846209, 0xb7bd9a28, 1
[pid 9426] semop(10846209, 0xb7bd9a28, 1
[pid 9424] semop(10846209, 0xb7bd9a28, 1
[pid 9420] select(0, NULL, NULL, NULL, {0, 730000}
[pid 9425] semop(10846209, 0xb7bd9a28, 1
[pid 9420] <... select resumed> ) = 0 (Timeout)
[pid 9420] waitpid(-1, 0xbff91918, WNOHANG|WSTOPPED) = 0
[pid 9420] select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)

Now go debug some PHP or CGI application in the guts

Source: http://edoceo.com/exemplar/strace-multiple-processes

Leave a Reply