Отбросив вопрос о том, как обращаться с ситуациями, когда не существует сеанса терминала / X, который можно использовать для захвата журнала. К ним можно обратиться, проверив доступность X / терминала и вернувшись к файлу журнала.
Каждый терминал подключен к уникальному псевдотерминалу (PTY), обычно / dev / pts / 0, / dev / pts/ 1, ...,. Все, что будет отправлено в PTY, будет отображаться на терминале (konsole, gnome-терминал, xterm, ...).
Вы можете создать решение, используя следующее
- Launchтерминал с командой:
konsole -e '(tty ; echo $$) > /tmp/active_tty ; while true ; do sleep 600 ; date ; done' &
. - Эффективно заставить терминал оставаться в рабочем состоянии до тех пор, пока он не будет закрыт / убит.
- Файл будет захватывать tty name и PID
- может использовать gnome-терминал, xterm, ...
- Каждый процесс, который хочет отправить вывод на «текущий» лог-терминал, должен перенаправить stdout и / или stderr наимя, указанное в файле:
exec > $(head -1 /tmp/active_tty) 2>&1
или аналогичное
Линия PID может использоваться для проверки того, работает ли PID терминала, еслинеобходимо.