
我想知道當多個進程嘗試寫入同一個日誌檔案時 syslog 的用法
for i in $var
do
some process >> logfile &
done
wait
答案1
你可以做
some process | logger &
產生進程並將其輸出定向到系統日誌。請注意,預設設施為“使用者”,預設等級為“通知”。您可以使用該選項來變更它們-p
。
之所以能夠在沒有問題的情況下工作,是因為進程不會直接寫入目標檔案。它們將訊息傳送到系統日誌守護進程,該進程管理適當檔案的寫入。據我了解,原子性將是基於行的,即進程的每一行輸出都會不受干擾地進入系統日誌,但多行訊息可能會混合來自其他進程的行。