Existe uma maneira de usar strace para rastrear diferentes partes de um pipeline de comando?

0

Eu tenho um pipeline como este:

command1 | command2

Existe uma maneira de rastrear os dois comandos simultaneamente?

    
por codeforester 07.09.2018 / 01:48

2 respostas

4

Você pode obter um único rastreamento com:

strace -f sh -c 'command1 | command2'

O "-f" irá "seguir" as chamadas do fork para os processos filhos (assim você também obterá quaisquer subcomandos invocados por command1 ou command2, que podem ou não ser o que você deseja.) ll obter um rastreamento do processo sh também. Se você quiser que cada saída de processos em um arquivo separado, a opção "-ff" rastreará subprocessos e anexará o PID ao nome de arquivo "-o", como em:

strace -ff -o trace sh -c 'command1 | command2'

Isso deve criar arquivos trace.<PID> separados para cada filho bifurcado.

    
por 07.09.2018 / 02:28
1

Sim, coloque strace antes de cada comando no pipeline e redirecione o stderr para um arquivo diferente para análise conveniente:

strace -o trace1.out command1 | strace -o trace2.out command2
    
por 07.09.2018 / 01:48