![当多个进程尝试写入同一个日志文件时,如何使用 syslog 来避免日志文件出现乱码?](https://linux22.com/image/30969/%E5%BD%93%E5%A4%9A%E4%B8%AA%E8%BF%9B%E7%A8%8B%E5%B0%9D%E8%AF%95%E5%86%99%E5%85%A5%E5%90%8C%E4%B8%80%E4%B8%AA%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20syslog%20%E6%9D%A5%E9%81%BF%E5%85%8D%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%87%BA%E7%8E%B0%E4%B9%B1%E7%A0%81%EF%BC%9F.png)
我想知道当多个进程尝试写入同一个日志文件时 syslog 的用法
for i in $var
do
some process >> logfile &
done
wait
答案1
你可以做
some process | logger &
生成进程并将其输出定向到系统日志。请注意,默认设施为“用户”,默认级别为“通知”。您可以使用该选项更改它们-p
。
之所以能够在没有问题的情况下工作,是因为进程不会直接写入目标文件。它们将消息发送到系统日志守护进程,该守护进程管理对适当文件的写入。据我了解,原子性将是基于行的,即进程的每一行输出都将不受干扰地进入系统日志,但多行消息可能会混合来自其他进程的行。