Эхо к stderr и тройник к лог-файлу?
В скрипте bash,
эхо "ошибка" 1>&2 | чайник
будет печатать stderr на экране, но не вести журнал в файл, как это сделать одновременно?
4 ответа
Чтобы вывести текст как в файл журнала, так и в stderr, но не в stdout, попробуйте следующее:
echo "error" | tee -a log 1>&2
echo "error" 1>&2 | tee -a log
С первой частью 1>&2
, что вы говорите: "Перенаправить стандартный вывод в стандартный поток ошибок". Так повторили вывод "error"
идет в stderr.
Труба (|
) только читает из stdout
не stderr
, Так tee
не получает stdin
вообще из трубы. Следовательно, он ничего не добавляет в файл журнала.
Чтобы просмотреть stdout и stderr на консоли и отправить оба потока в журнал, перенаправьте stderr на stdout, как показано ниже:
progam.sh 2>&1 | tee -a log
Но по умолчанию только stdout передается в каналах, так что в
$ echo "error" | tee
tee
видит только толстый из echo
а не стдерр. stderr по-прежнему будет отображаться в терминале.