Отсутствие вывода файла журнала при запуске скрипта под экраном, с перенаправлением консоли (тройник)

У меня есть скрипт python, который напишет некоторые общие записи на консоль. Я перенаправил это в файл журнала, используя типичный python -u jbot.py | tee -a jbot.log python -u jbot.py | tee -a jbot.log . Это отлично работает, я получаю вывод консоли и вход в лог-файл. Однако при попытке запустить это под экраном:

screen python -u jbot.py | tee -a jbot.log

Я не получаю какой-либо вывод журнала в файл. Как только я отключился от screen , удалит ли консольный вывод для этого сеанса полностью, или есть способ, по которому у меня все еще есть вкладка logfile из stdout и stderr моего скрипта?

Я понимаю, что использование библиотеки журналов, вероятно, решит это (поскольку я все равно показую), но на данный момент я хочу использовать захват вывода консоли (если это возможно), пока я не смогу правильно интегрировать модуль регистрации в свой код.

  • Как изменить стандартный каталог окон из tmux
  • Почему нажатие Ctrl-h в xterm + tmux отправляет «^?»?
  • Как я могу настроить byobu для использования второго сеанса экрана при входе в систему?
  • запускать экран после «su'ing для конкретного пользователя
  • ssh -> screen -> ssh - как убить удаленный экранированный ssh, не убивая оригинальную сессию ssh
  • Команда не найдена при запуске функции в bash
  • страница вверх в экране gnu с Shift-PageUp
  • Принудительное название на экране GNU
  • One Solution collect form web for “Отсутствие вывода файла журнала при запуске скрипта под экраном, с перенаправлением консоли (тройник)”

    Вам нужно сделать что-то вроде этого:

     screen sh -c 'python -u jbot.py | tee -a jbot.log' 

    В принципе, перед тем, как вы напрямую подключили вывод экрана (а не вашего скрипта python) к журналу. Экран принимает команду для выполнения в качестве своего аргумента, который сам не использует оболочку. Поэтому вам необходимо явно запустить его.

    Другим вариантом является использование встроенного журнала вывода на экране; см. параметр -L (также доступный внутри экрана через интерфейс пользователя).

    Linux и Unix - лучшая ОС в мире.