다음과 같은 파이프라인이 있습니다.
command1 | command2
두 명령을 동시에 추적하는 방법이 있습니까?
답변1
다음을 통해 개별 추적을 얻을 수 있습니다.
strace -f sh -c 'command1 | command2'
"-f"는 하위 프로세스에 대한 포크 호출을 "따라갑니다". 따라서 command1 또는 command2에 의해 호출되는 하위 명령도 얻을 수 있으며 이는 원하는 것일 수도 있고 아닐 수도 있습니다. 또한 프로세스 추적도 얻을 수 있습니다. 획득 sh
도 됩니다. 각 프로세스 출력을 별도의 파일로 원하는 경우 "-ff" 옵션은 다음과 같이 하위 프로세스를 추적하고 "-o" 파일 이름에 PID를 추가합니다.
strace -ff -o trace sh -c 'command1 | command2'
이렇게 하면 trace.<PID>
분기된 각 하위 항목에 대해 별도의 파일이 생성되어야 합니다.
답변2
예, strace
파이프라인의 모든 명령 앞에, 더 쉬운 분석을 위해 stderr를 다른 파일로 리디렉션합니다.
strace -o trace1.out command1 | strace -o trace2.out command2