Как запустить команду truss с конвейерным выводом?
например.
# truss -leDo /tmp/truss.out tar cvf - dirs/ | gzip -1 > archive.tar.gz
Я получаю только вывод tar в truss, а не из gzip!
Вы пробовали использовать -f
? Он сообщает truss следовать за всеми дочерними элементами, которых порождает исходная команда. Я не уверен, что это сработает, потому что команда 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
команда отдельная. Если вы этого не сделаете необходимость что вы можете просто использовать -z
вариант tar, чтобы он выполнял сжатие.