~によるとrunsv
マニュアルページ:
service / logディレクトリが存在する場合、runvはパイプを作成し、service / runおよびservice / finishの標準出力をパイプにリダイレクトし、service / logディレクトリに変更し、./runスクリプトを起動します。ロギングサービスの標準入力は、パイプから読み取るようにリダイレクトされます。
明らかに、runsv
サービスの標準出力(標準エラー出力ではない)だけがsvlogd標準入力にリダイレクトされます。私の質問は:なぜですか?もちろん、私のデバイスの標準エラー出力を記録したいと思います。exec 2>&1
各ユニットファイルの先頭に特に注意を払うべき理由は何ですか?
乾杯!
答え1
実際、あなたは知りません。
runsv
この行動は以下から来ています。svscan
もともとBernsteinのdaemontoolsでも同じことをしました。ほとんどすべての人がそれをコピーしました。ブルースガンターsvscan
Laurent Bercotのdaemontools-encoreでs6-svscan
s6とウェインマーシャルでperpd
犯人の人々はみんなこういうことをします。
アダム・サンプソン(Adam Sampson)もsvscan
出身だ。艦隊err
コードからファイル記述子を呼び出しても、標準出力のみがリンクされます。 ☺
exec 2>&1
とがfdmove -c 2 1
標準になり、いくつかのプログラミング言語が明確に定義されていることを観察してください。標準ログファイル記述子2のストリーム(C++など)で終了するために、次の操作をstd::clog
行いました。service-manager
nosh ツールセットから 2 つの標準出力を接続します。そしてパイプラインサービスが一緒にあるときのパイプラインの標準エラー。
追加読書
- ジョナサンデボインポラード(2014)。実行中のスクリプトとサービスユニットを並べて表示します。。よく与えられる答えです。
- ジョナサンデボインポラード(2015)。 」記録」。デーモンツールシリーズ。よく与えられる答えです。
- https://unix.stackexchange.com/a/294206/5132