起動時に実行する必要があるプログラムがあり、stdoutとstderrに出力があり、loggerコマンドを使用してシステムログにリダイレクトしたいと思います。私の起動スクリプトの内容は次のとおりです。
/home/dirname/application_name -v|ロガー2>&1 &
これにより、stdoutがsyslogにリダイレクトされます。これは問題ありませんが、stderrがコンソールに表示されるため、コマンドを改善する必要があります。
ベストアンサー1
にパイプする前に、STDERRとSTDOUTの出力を組み合わせる必要がありますlogger
。この試み:
/home/dirname/application_name -v 2>&1 | logger &
はい
$ echo "hi" 2>&1 | logger &
[1] 26818
[1]+ Done echo "hi" 2>&1 | logger
$ sudo tail /var/log/messages
Apr 12 17:53:57 greeneggs saml: hi
実際のBashシェルでまれに使用されている場合は、ここで省略表記を使用することもできます(Dashと混同しないでください)。
$ echo "hi" |& logger &
メモ:これは同じです<cmd1> 2>&1 | <cmd2>
。繰り返しますが、実際の Bash シェルを対話的に使用する場合にのみ、上記を使用することをお勧めします。
から抜粋ABSG
# |& は 2>&1 | の略で Bash 4 に追加されました。