Перенаправить STDOUT в новое окно, STDERR в то же новое окно, а также файл журнала - PullRequest
1 голос
/ 11 мая 2019

У меня есть этот длинный процесс в bash-скрипте (один из многих), и поэтому я экспериментирую с отправкой всех выходных данных в отдельное окно для мониторинга с любыми ошибками, записанными в errorlog.txt .Например:

rsync -vahPz foo@bar:/bigfolder/ ./ >> /dev/pts/4 2>> errorlog.txt

Проблема в том, что выше не отображается никаких ошибок в отдельном окне.

Есть ли способ перенаправить ошибки в оба моих отдельных окна на /dev/pts/4 и errorlog.txt , при этом перенаправляя обычный вывод на /dev/pts/4 тоже?

Что-то вроде:

rsyncblah >> /dev/pts/4 2>> errorlog.txt && /dev/pts/4

1 Ответ

3 голосов
/ 11 мая 2019

Вы можете использовать tee с подстановкой процесса , например:

your_cmd 1> >(tee -a /dev/pts/2 >> out.log) 2> >(tee -a /dev/pts/2 >> err.log)

В качестве альтернативы, вы можете использовать подстановку процесса только для stderr - потому что это необходимо - и перенаправитьстандартный вывод через канал:

your_cmd 2> >(tee -a /dev/pts/2 >> err.log) | tee -a /dev/pts/2 >> out.log
...