Как перехватить stdout/stderr другого процесса

strace -ff -e write=1,2 -s 1024 -p PID 2>&1 | grep "^ |" | cut -c11-60 | sed -e 's/ //g' | xxd -r -p


Команда strace используется для отслеживания системных вызовов и сигналов, которые выполняет указанный процесс (PID). Опция -ff позволяет отслеживать дочерние процессы. Опция -e write=1,2 указывает strace отслеживать только системные вызовы записи в stdout (1) и stderr (2). Опция -s 1024 устанавливает максимальный размер выводимых данных в символах. Далее, вывод strace перенаправляется в grep, который фильтрует строки, начинающиеся с пробела и вертикальной черты. Затем, команда cut обрезает первые 10 символов, sed удаляет пробелы, а xxd -r -p преобразует шестнадцатеричный вывод в бинарные данные. Это позволяет перехватить stdout и stderr другого процесса. Альтернативным способом может быть использование утилиты strace с опцией -o для записи вывода в файл.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *