명령 파이프라인의 다른 부분을 추적하기 위해 strace를 사용하는 방법이 있습니까?

명령 파이프라인의 다른 부분을 추적하기 위해 strace를 사용하는 방법이 있습니까?

다음과 같은 파이프라인이 있습니다.

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

관련 정보