Redirecting/grep'ing STDOUT существующей оболочки

Ядро

Ядро управляет ресурсами. Ресурсы включают процессорное время, память и периферийные устройства. Это делает это путем прямого общения с ресурсами и воздействия интерфейса пространства пользователя.

Инструменты пространства пользователя (иногда включает инструменты GNU и утилиты),

Инструменты Пространства пользователя включают основные утилиты как ls, кошка, dd, ln, монтируются и т.д. Они позволяют пользователю работать с ресурсами, которые обеспечивает ядро. Linux (в противоположность BSD, OSX и другим Нельдам) является основным пользователем инструментов GNU, но даже все системы Linux не используют их; альтернативный набор инструментов для Linux обеспечивается Busybox.

Shell

Оболочка обеспечивает среду, которая позволяет пользователю использовать Инструменты Пространства пользователя. Оболочки в качестве примера включают удар, ksn, zsh, и рыбу. Они обычно обеспечивают подсказку, при которой пользователь может ввести команды, которые запускают инструменты пространства пользователя.

Менеджер окон

Это - намного более высокий слой, там обычно существует сервер дисплея, который ответственен за управление графическим, аудио, и ресурсы ввода-вывода и обеспечение интерфейса к высокоуровневым инструментам. Обычно, менеджер по оформлению является слоем выше сервера дисплея и может обеспечить вещи как пользовательское управление входом в систему и управление сеансами. Выше этого обычно менеджер окон. Менеджер окон обеспечивает регионы, в которых приложения могут представить свое содержание, он также позволяет пользователю взаимодействовать с этими регионами путем перемещения, изменяя размер и переупорядочивая их.

3
23.03.2012, 20:59
2 ответа

Существует умный взлом, упомянул здесь что использование GDB для присоединения к процессу и названной утилите dupx оборачивает эту функциональность.

От dupx страница справочника:

Dupx является простой утилитой для переотображения файлов уже запускающей программы. Оболочки как Bash позволяют легкое входной/вывод/ошибку перенаправление в то время, когда программа запущена с помощью >, < - как синтаксис, например: echo 'redirect this text' > /tmp/stdout перенаправит вывод echo кому: /tmp/stdout.

Стандартные оболочки однако не обеспечивают возможность переотображения (перенаправления) вывода (или вводят, или ошибка) для уже запущенного процесса. Dupx пытается решить эту проблему при помощи dup(2) системный вызов изнутри gdb(1). Dupx в настоящее время реализуется как простая обертка оболочки вокруг a gdb сценарий.

5
27.01.2020, 21:17

Используйте команду screen log (!)

Поскольку процесс уже запущен в сеансе экрана, это просто вопрос экран для регистрации вывода этого окна:

Переключитесь в окно сценария, Ca H для регистрации.
Теперь вы можете:

$ tail -f screenlog.2 | grep whatever

Из справочной страницы экрана:

log [on | off]

Начать / остановить запись вывода текущего окна в файл "screenlog.n" в каталог окна по умолчанию, где n - номер текущего окна. Это имя файла можно изменить с помощью команды logfile. Если параметр не указан, состояние регистрации переключается. Журнал сеанса добавляется к предыдущему содержимому файла, если он уже существует. Текущее содержимое и содержимое истории прокрутки не включаются в журнал сеанса. По умолчанию выключено.

0
27.01.2020, 21:17

Теги

Похожие вопросы