2016-08-24 12 views
2

Я попытался перенаправить стандартную ошибку в файл с ограниченными разрешениями. Это то, что я сделал:Как перенаправить в замещение процесса?

exec 2> >(umask 077; exec > stderr.log) 

Идея заключалась в том, чтобы перенаправить стандартную ошибку в процессе изменения и перенаправить биты полномочий еще раз в лог-файл.

Но это не работает. Команда останавливается и заканчивается 141 после нажатия возвращает.

Руководство Bash не определяет «список процессов» в manual.

Может ли кто-нибудь объяснить отказ?

ответ

3

Вы должны использовать cat внутри суб-процесса, чтобы написать данные, поступающие в стандартный ввод процесса внутри (...) которая на самом деле STDERR из родительского процесса:

exec 2> >(umask 077; cat > stderr.log) 

Подстановка процессов подает выходной сигнал процесса (или процессов) в stdin другого процесса. Просто сделав exec > stderr.log, вы просто перенаправляете stdout подпроцесса в файл, но вы вообще ничего не пишете в stdout внутри >(...)

+0

Я не ищу альтернативы. Я хочу понять, что не так с моей командой. – ceving

+0

Проверьте обновленный ответ. Я попытался объяснить это сейчас. – anubhava

 Смежные вопросы

  • Нет связанных вопросов^_^