codeforester Asked: 2018-09-07 15:48:06 +0800 CST2018-09-07 15:48:06 +0800 CST 2018-09-07 15:48:06 +0800 CST 有没有办法使用 strace 来跟踪命令管道的不同部分? 772 我有这样的管道: command1 | command2 有没有办法同时跟踪两个命令? linux strace 2 个回答 Voted Best Answer Alex Tullenhoff 2018-09-07T16:28:40+08:002018-09-07T16:28:40+08:00 您可以通过以下方式获得单个跟踪: strace -f sh -c 'command1 | command2' “-f”将“跟随”子进程的fork调用(因此您还将获得由command1或command2调用的任何子命令,这可能是您想要的,也可能不是。)此外,您将获得一个sh过程也有痕迹。如果您希望每个进程在单独的文件中输出,“-ff”选项将跟踪子进程并将 PID 附加到“-o”文件名,如下所示: strace -ff -o trace sh -c 'command1 | command2' trace.<PID>这应该为每个分叉的孩子创建单独的文件。 codeforester 2018-09-07T15:48:06+08:002018-09-07T15:48:06+08:00 是的,放在strace管道中的每个命令之前,并将 stderr 重定向到不同的文件以便于分析: strace -o trace1.out command1 | strace -o trace2.out command2
您可以通过以下方式获得单个跟踪:
“-f”将“跟随”子进程的fork调用(因此您还将获得由command1或command2调用的任何子命令,这可能是您想要的,也可能不是。)此外,您将获得一个
sh
过程也有痕迹。如果您希望每个进程在单独的文件中输出,“-ff”选项将跟踪子进程并将 PID 附加到“-o”文件名,如下所示:trace.<PID>
这应该为每个分叉的孩子创建单独的文件。是的,放在
strace
管道中的每个命令之前,并将 stderr 重定向到不同的文件以便于分析: