Como mencionado em uma das respostas à sua pergunta anterior, a chamada de família exec acontece após a O processo filho é criado, portanto, se você quiser que ele apareça na saída strace , você deverá fazê-lo também seguir os filhos do processo de shell que está rastreando.
Você pode fazer isso adicionando as opções -f ou -ff , aqui estão os snippets da página do manual relevantes:
-f Trace child processes as they are created by currently traced processes as a
result of the fork(2) system call.
-ff If the -o filename option is in effect, each processes trace is written to
filename.pid where pid is the numeric process id of each process. This is
incompatible with -c, since no per-process counts are kept.
Para rastrear as chamadas relevantes envolvidas na execução de um comando em bash , você pode fazer:
strace -f -e trace=process bash -c 'ls; :'
O -e trace=process rastreia especificamente todas as chamadas envolvidas no gerenciamento de processos. Também o segundo comando no-op ( : ) é necessário como se você executasse o bash com apenas um único comando, é inteligente o suficiente apenas fazer um execve sem bifurcar já que ele sabe que não precisa fazer mais nada .