Intereting Posts
Как предотвратить создание символической ссылки внутри себя? Постоянное выполнение команды терминала Не удается смонтировать SD-карту. Неверная файловая система. Установка каталога mergerfs с привязкой mount под lxc не показывает ничего, кроме прав root или 555 Добавить расширение ко всем файлам в каталоге, содержащем точную строку Изображения и таблицы стилей не загружаются из кальмара из-за плохого сертификата? Установка отсутствующих пакетов R при работе в режиме bash Установка Linux на MacBook Air Что такое ассоциация inode с файлом? Как установить свойство X, являющееся массивом строк? Проблема с подключением Beagleboard через последовательный порт? Смещение строки регулярного выражения pwd не задан правильно в запросе zsh Выполнить команду в фоновом режиме, но также объединить в нее другие команды? Как предотвратить преобразование аргументов bash?

Можно ли труба stderr при сохранении stdout?

У меня есть длительный процесс, который записывает информацию о статусе в stdout и регистрирует отладочную информацию в stderr.

Я хотел бы передать вывод stderr в logger , так что все, что написано в stderr, на самом деле заканчивается в syslog, и в то же время может читать процесс 'stdout.

Можно ли сделать это?

 { cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1 

Идея состоит в том, что внешний stdout дублируется на дескриптор файла (fd) 3 и восстанавливается для cmd на stdout, в то время как дескриптор файла cmd s (stderr) сам переходит к протоколу в журнал.

3>&- заключается в том, чтобы закрыть это fd для команд cmd и logger после того, как он выполнил свою задачу, поскольку эти команды не нуждаются / не используют.