
複数のプロセスが同じログファイルに書き込もうとしているときのsyslogの使い方を知りたいです。
for i in $var
do
some process >> logfile &
done
wait
答え1
できるよ
some process | logger &
プロセスを起動し、その出力を syslog に出力します。デフォルトの facility は「user」、デフォルトの level は「notice」になることに注意してください。オプションを使用してこれらを変更できます-p
。
これが問題なく動作する理由は、プロセスが宛先ファイルに直接書き込まないからです。プロセスはメッセージを syslog デーモンに送信し、syslog デーモンが適切なファイルへの書き込みを管理します。私が理解している限りでは、アトミック性は行ベースです。つまり、プロセスからの出力の各行は干渉なく syslog に送信されますが、複数行のメッセージには他のプロセスからの行が混ざる可能性があります。