如何运行带有管道输出的 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 下运行。
所有这些都假设您希望将tar
andgzip
命令分开。如果您不这样做需要那样的话,您就可以使用-z
tar 选项让其进行压缩。