回答:
にパイプする前に、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に追加されました。
dash
起動時にスクリプトを実行しようとすると失敗するだけで、起動プロセスがおかしくなります...常に対話型のシェルのみのコンテキストであるか、少なくとも、そういうことは私の意見です。
2>&1
たので(おそらく間違って)想定していましたが、例がスタートアップを扱っていることを考えると、警告はかなり賢明です。後者のヒントは、対話型のみのBashシェルを対象としているという警告とともに、より目立つようにします。
dash
しかし、私は使用しています-それは本当に速いです。
>&
:tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html