2015-03-25 1 views

ответ

0

Вы можете сделать вывод с использованием перенаправления оболочки или с помощью программы, такой как script - при условии, что ваша программа была запущена «обычным способом». (Можно писать через специальные устройства на другие терминалы, учитывая соответствующие разрешения).

Один предполагает, что вы уже знаете о перенаправлении вывода, например,

foo >bar 

но есть случай, например, графического интерфейса пользователя программы, которая продолжает писать на терминал.

Не беспокоясь о вмешательстве в программу, перенаправляя ее вывод, я бы запустил script и запустил программу в оболочке, которая начинается script. Тогда все, что написано в этой оболочке, будет отправлено в файл typescript (по умолчанию).

С другой стороны, программы GUI, которые начинают, могут быть конфигурируемыми терминальными окнами, позволяющими настраивать их с помощью сценария запуска, который может захватывать выходные данные.

Как указано в How to open process again in linux terminal?, можно подключить к работающему процессу с помощью strace, учитывая его идентификатор процесса. Используя опцию -e, как описано в 7 Strace Examples to Debug the Execution of a Program in Linux, вы можете просто извлечь write звонки.

Имейте в виду, с strace что непечатаемые символы из записи преобразуются в печати текста, и что strace отображает аргументы функции до определенного лимита (который можно настроить с помощью опции -s). Выходной сигнал strace может быть перенаправлен (и его не нужно запускать на том же терминале, что и исходный процесс).

+0

спасибо. Я забыл упомянуть, что я не могу завершить/перезапустить процесс, так как это нарушит много запущенных сервисов. – astralmaster

+0

Я больше думал о фильтрации журнала strace для написания системных вызовов. – astralmaster

 Смежные вопросы

  • Нет связанных вопросов^_^