起動時に実行する必要のあるプログラムがあります。それは、loggerコマンドを使用してシステムログにリダイレクトするstdoutおよびstderrに出力します。私のスタートアップスクリプトには次のものがあります。
/home/dirname/application_name -v | logger 2>&1&
これはstdoutをsyslogにうまくリダイレクトしていますが、stderrがコンソールに来ているので、コマンドを調整する必要があります。
logger
にパイプする前に、STDERRとSTDOUTの出力を組み合わせる必要があります。代わりにこれを試してください:
/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 Shellをインタラクティブに利用する場合にのみ上記を使用することは、それに取り組むための良い方法です。
[〜#〜] absg [〜#〜]からの抜粋
#|&は、2>&1 |の省略形としてBash 4に追加されました。