Иногда надо стрейсить, а конкретный pid процесса неизвестен. И следовать fork-у тоже нельзя, т.к. дофига посторонних процессов. Но в моем случае я знал под каким пользователем плодятся нужные мне процессы. Придумал такую конструкцию:

for pid in $(pgrep -U USER);do (nohup strace -o filename.${pid}.strace -s4096 -e trace=network,file,ipc -p${pid} &) ;  done

Параметры strace подстраиваете уже под себя.

У меня указаны группы системных вызовов для отслеживания, все это можно вычитать из man strace :).

Проблема данного метода в том, что он конечно же не поймает новые процессы, если в этом есть необходимость — можно уже написать скрипт, хоть на bash, хоть на python, который будет висеть как демон и сканировать наличие процессов заданного юзера, и при появлении новых pid-ов, добавлять новые strace-команды.