當多個進程嘗試寫入同一個日誌檔案時,如何使用 syslog 來避免日誌檔案出現亂碼?

當多個進程嘗試寫入同一個日誌檔案時,如何使用 syslog 來避免日誌檔案出現亂碼?

我想知道當多個進程嘗試寫入同一個日誌檔案時 syslog 的用法

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

答案1

你可以做

some process | logger &

產生進程並將其輸出定向到系統日誌。請注意,預設設施為“使用者”,預設等級為“通知”。您可以使用該選項來變更它們-p

之所以能夠在沒有問題的情況下工作,是因為進程不會直接寫入目標檔案。它們將訊息傳送到系統日誌守護進程,該進程管理適當檔案的寫入。據我了解,原子性將是基於行的,即進程的每一行輸出都會不受干擾地進入系統日誌,但多行訊息可能會混合來自其他進程的行。

相關內容