Анализ вывода strace:
Я использовал лучший ответ(с моим идентификатором процесса 28223 )...
> sudo strace -p28223 -s9999 -e write
...
write(9, "Info\nI\nCare\nabout", 55) = 55
...
Чтобы определить, что меня волнует write(9
. (Ниже используется цифра 9. Вероятно, это дескриптор файла, который может отличаться для вашего процесса. )Затем я написал быстрый Ruby-скрипт для их разбора и отображения.
Вставьте следующее в/usr/bin/parse_strace.rb
#!/usr/bin/ruby
num = ARGV[0]
STDIN.each { |line|
if (line.match(/write\(#{ num },\s*"(.*?)"/)) then
puts $1.split('\x').map { |s| s.to_i(16).chr }.join()
end
}
Не забывайchmod a+x /usr/bin/parse_strace.rb
Я вызываюstrace -xx
(выходные данные в шестнадцатеричном формате, поэтому регулярное выражение соответствует правильному ), конвейеру (, включая STDERR ), моему сценарию с 9
в качестве первого аргумента.
sudo sh -c 'strace -xx -p28223 -s9999 -e write 2>&1 | parse_strace.rb 9'
И, вуаля, он выводит исходный STDOUT процесса, новые строки, цвет и все!