パイプ出力でtrussコマンドを実行するにはどうすればよいですか?
例えば。
# truss -leDo /tmp/truss.out tar cvf - dirs/ | gzip -1 > archive.tar.gz
Gzipからではなく、トラスで「tar」出力のみを取得します。
-f
を使ってみましたか?これは、元のコマンドが生成するすべての子を追跡するようにトラスに指示します。 tarコマンドが実際にgzipコマンドを生成していないため、それが機能するかどうかはわかりません。
動作する可能性のある他のオプションは次のとおりです。
truss -leDo /tmp/truss.tar.out tar cvf - dirs/ | truss -leDo /tmp/truss.gzip.out gzip -1 > archive.tar.gz
繰り返しになりますが、それが機能するかどうかはわかりませんが、今回はトラスがSTDINに対して何をするのかわからないためです。
これらの両方が失敗した場合は、-f
オプションを使用し、両方をシェルでラップすることで、どこかに到達する可能性があります。
truss -leDo /tmp/truss.out ( tar cvf - dirs/ | gzip -1 > archive.tar.gz )
これにはbashが必要ですが、他のシェルで実行するように変更できます。
これはすべて、tar
コマンドとgzip
コマンドを分離することを前提としています。そうでない場合はneed-z
オプションを使用してtarを実行し、圧縮を実行することができます。