Назад | Перейти на главную страницу

Как запустить truss с помощью команды piped в Solaris

Как запустить команду 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, чтобы он выполнял сжатие.