#bash
Вопрос:
У меня есть команда Bash с запуском скрипта python и выводом результатов на stdout и stderror.
С помощью этой команды обычные журналы и журналы ошибок записываются в отдельные файлы:
python3 file.py gt;gt; normal.log 2gt;gt; error.log
Кроме того, stdout и stderr должны быть перенаправлены во внешнюю программу (например logToTelegram.sh):
python3 file.py 2gt;amp;1 | logToTelegram.sh
Есть ли способ реализовать как во время одного выполнения, так и записи файлов журнала (обычных и ошибок) и передачи stdout и stderror вместе в программу logToTelegram.sh?
Ответ №1:
Это должно сработать:
( python3 file.py 2gt; gt;(tee -a error.log) gt; gt;(tee -a normal.log) ) | logToTelegram.sh
Обратите внимание, что это 2gt; gt;(tee ...)
должно быть размещено раньше gt; gt;(tee ...)
, чтобы это работало правильно. Для простоты обе tee
команды выводятся в stdout, устраняя необходимость 2gt;amp;1
logToTelegram.sh
в предварительном вводе .
Или, чтобы быть ближе к исходному коду и быть более точным:
( python3 file.py gt; gt;(tee -a normal.log) 2gt; gt;(tee -a error.log gt;amp;2) ) 2gt;amp;1 | logToTelegram.sh
Здесь первый tee
выводится в stdout, в то время как второй tee
выводится в stderr, поэтому 2gt;amp;1
требуется отправить все выходные данные logToTelegram.sh
.
Комментарии:
1. @Freude: пожалуйста, подумайте о том, чтобы отметить ответ как принятый, если он вам помог.