追加読書

追加読書

~によるとrunsvマニュアルページ:

service / logディレクトリが存在する場合、runvはパイプを作成し、service / runおよびservice / finishの標準出力をパイプにリダイレクトし、service / logディレクトリに変更し、./runスクリプトを起動します。ロギングサービスの標準入力は、パイプから読み取るようにリダイレクトされます。

明らかに、runsvサービスの標準出力(標準エラー出力ではない)だけがsvlogd標準入力にリダイレクトされます。私の質問は:なぜですか?もちろん、私のデバイスの標準エラー出力を記録したいと思います。exec 2>&1各ユニットファイルの先頭に特に注意を払うべき理由は何ですか?

乾杯!

答え1

実際、あなたは知りません。

runsvこの行動は以下から来ています。svscanもともとBernsteinのdaemontoolsでも同じことをしました。ほとんどすべての人がそれをコピーしました。ブルースガンターsvscanLaurent Bercotのdaemontools-encoreでs6-svscans6とウェインマーシャルでperpd犯人の人々はみんなこういうことをします。

アダム・サンプソン(Adam Sampson)もsvscan出身だ。艦隊errコードからファイル記述子を呼び出しても、標準出力のみがリンクされます。 ☺

exec 2>&1とがfdmove -c 2 1標準になり、いくつかのプログラミング言語が明確に定義されていることを観察してください。標準ログファイル記述子2のストリーム(C++など)で終了するために、次の操作をstd::clog行いました。service-managernosh ツールセットから 2 つの標準出力を接続します。そしてパイプラインサービスが一緒にあるときのパイプラインの標準エラー。

追加読書

関連情報