如何在 Solaris 中使用管道命令运行 truss

如何在 Solaris 中使用管道命令运行 truss

如何运行带有管道输出的 truss 命令?

例如。

# truss -leDo /tmp/truss.out tar cvf - dirs/ | gzip -1 > archive.tar.gz

我只得到了 truss 中的“tar”输出,而不是 gzip 中的输出!

答案1

您尝试过使用 吗-f?它告诉 truss 跟随原始命令生成的任何子命令。我不确定这是否会起作用,因为 tar 命令实际上并没有生成 gzip 命令。

另一个可能有效的选择是:

truss -leDo /tmp/truss.tar.out tar cvf - dirs/ | truss -leDo /tmp/truss.gzip.out gzip -1 > archive.tar.gz

但是,我再次不知道它是否会起作用,但这次是因为我不知道 truss 对 STDIN 做了什么。

如果这两种方法都失败了,那么您可以使用该-f选项并将它们都包装在 shell 中来取得一些效果:

truss -leDo /tmp/truss.out ( tar cvf - dirs/ | gzip -1 > archive.tar.gz )

这个需要 bash 但可以修改为在其他 shell 下运行。

所有这些都假设您希望将tarandgzip命令分开。如果您不这样做需要那样的话,您就可以使用-ztar 选项让其进行压缩。

相关内容