У меня есть программа, которую нужно запустить при запуске, она выводит данные на stdout и stderr, которые я хочу перенаправить в системный журнал с помощью команды logger. То, что у меня есть в моем скрипте запуска, это:
/ home / dirname / application_name -v | logger 2> & 1 &
Это перенаправляет стандартный вывод в syslog, но на консоль приходит stderr, поэтому мне нужно уточнить команду.
shell
io-redirection
stdout
stdin
Фред Бассет
источник
источник
>&
: tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlОтветы:
Вам необходимо объединить выходные данные STDERR и STDOUT перед передачей в него
logger
. Попробуйте это вместо этого:пример
Вы также можете использовать сокращенную запись здесь, если использовать ее осторожно в реальной оболочке Bash (не путать с Dash):
ПРИМЕЧАНИЕ. Это эквивалентно
<cmd1> 2>&1 | <cmd2>
. Опять же, используйте вышеупомянутое, когда вы используете интерактивную оболочку Bash в интерактивном режиме, это хороший способ приблизиться к ней.выдержка из ABSG
Ссылки
источник
dash
попытаетесь выполнить сценарий при загрузке только для того, чтобы потерпеть неудачу и затормозить процесс загрузки ... хорошо ... Когда упоминается такой синтаксис, он должен всегда в контексте интерактивных оболочек только , или, по крайней мере, таково мое мнение.2>&1
но ваши предупреждения весьма мудры, учитывая, что пример касается стартапов. Я сделаю эти последние советы более заметными с предупреждением, что они предназначены только для интерактивных оболочек Bash.dash
, хотя - это действительно быстро.