当多个进程尝试写入同一个日志文件时,如何使用 syslog 来避免日志文件出现乱码?

当多个进程尝试写入同一个日志文件时,如何使用 syslog 来避免日志文件出现乱码?

我想知道当多个进程尝试写入同一个日志文件时 syslog 的用法

for i in $var
do
some process >> logfile &
done
wait

答案1

你可以做

some process | logger &

生成进程并将其输出定向到系统日志。请注意,默认设施为“用户”,默认级别为“通知”。您可以使用该选项更改它们-p

之所以能够在没有问题的情况下工作,是因为进程不会直接写入目标文件。它们将消息发送到系统日志守护进程,该守护进程管理对适当文件的写入。据我了解,原子性将是基于行的,即进程的每一行输出都将不受干扰地进入系统日志,但多行消息可能会混合来自其他进程的行。

相关内容