Отправка STDERR к регистратору

Я пишу сценарий удара для выполнения удаленного резервного копирования, с помощью rsync по SSH. Я могу отправить STDOUT на регистратор для журналов через

rsync --del -az -e 'ssh -i mycrt.crt' /home/gnutt/backup/ me@offisite:backup | logger -i

Но я хочу отправить STDERR вместо этого, поэтому если существует проблема, такой как, который удаленный недоступен, которые производят, должен быть отправлен на регистратор и зарегистрирован.

6
задан Gnutt 26 March 2010 в 14:47
поделиться

2 ответа

Если вам нужен stderr вместо stdout (а не stderr И stdout), вы можете сделать следующее:

  1. открыть другой дескриптор файла (9)
  2. перенаправить stdout (1) на новый дескриптор файла (9)
  3. перенаправить stderr (2) на stdout (1)

Что выглядит следующим образом:

rsync --del -az -e 'ssh -i mycrt.crt' /home/gnutt/backup/ me@offisite:backup 9> /dev/null 1>&9 2>&1 | logger -i

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

logger -i <( rsync --del -az -e 'ssh -i mycrt.crt' /home/gnutt/backup/ me@offisite:backup > /dev/null )
6
ответ дан 8 December 2019 в 17:20
поделиться

Вы можете перенаправить дескриптор STDERR (2) в STDOUT (1), добавив 2> & 1 , например:

rsync --del -az -e 'ssh -i mycrt.crt' /home/gnutt/backup/ me@offisite:backup  2>&1 | logger -i
6
ответ дан 8 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: