我有一個守護進程寫入日誌文件,最終填滿了磁盤。有沒有辦法讓我定期限制日誌文件的大小而不停止守護進程而不更改其中的代碼? SIGHUP殺死守護進程。是否有可能修剪一個守護進程打開而沒有守護進程關閉文件的日誌文件?
回答
慣用的伎倆是:
echo -n > /var/log/name.log
,將工作前提是你的守護程序正常打開追加模式的日誌文件。他們大部分都是。 (該命令只是簡單地將文件大小截斷爲零,並且不會干涉其他進程以追加模式寫入文件。)
另一個選項是檢查守護進程是否支持syslog並將其激活。大多數Linux現在都附帶一些日誌採集器,它可以自動(根據規則等)歸檔syslog文件。
因此,如果文件以追加模式打開,而另一個進程將其截斷,則第一個進程可以繼續寫入。謝謝! – arturh 2010-06-16 11:16:06
追加模式的要點在於,寫入操作在實際寫入之前以原子方式尋找文件末尾 - 並在文件末尾寫入。如果一個進程截斷了該文件,守護進程甚至不會注意到,由於追加模式,操作系統將自動尋找到文件末尾,現在位於偏移量0。 – Dummy00001 2010-06-16 14:27:40
如果文件名是常量,您可以嘗試創建一個fifo來代替日誌文件,並根據需要將其讀入多個單獨的日誌文件中。
這是一個不錯的選擇,但需要編寫更多的代碼來管理fifo。謝謝。 – arturh 2010-06-16 11:14:12
要修剪的日誌文件,但保留最近1000行吧:
echo "$(tail -1000 daemonlog)" > daemonlog
- 1. init進程是一個守護進程
- 2. 可可的守護進程
- 3. 沒有PID文件競爭條件的Linux守護進程
- 4. 守護進程模式下的日誌文件
- 5. Docker守護進程日誌在哪裏?
- 6. python守護進程,不寫入文件
- 7. 守護進程未登錄到自定義日誌文件
- 8. Python日誌記錄守護進程破壞文件句柄
- 9. 守護進程關閉和清理
- 10. Linux守護進程
- 11. iphone守護進程
- 12. Python守護進程
- 13. hadoop守護進程沒有啓動
- 14. Python守護進程沒有pidfile
- 15. nginx守護進程開啓/關閉選項有什麼區別?
- 16. C linux守護進程在打開FIFO後沒有寫入文件
- 17. 可選擇守護進程Python進程
- 18. Linux守護進程停止啓動 - 停止守護進程
- 19. 定時器()作爲守護進程與非守護進程
- 20. 守護進程java進程 - 有沒有這樣的事情?
- 21. 關閉描述符是否影響創建的守護進程
- 22. java守護進程線程
- 23. Ruby守護進程vs守護進程gem:有哪些優點和缺點?
- 24. 開始的MongoDB作爲一個守護進程,而不必寫日誌
- 25. Windows的Docker守護進程
- 26. FreeBSD的守護進程庫
- 27. 'fork_ed'的守護進程'child_process'
- 28. 守護進程的Makefile
- 29. mongrel_rails集羣::開始不起作用,找守護進程/守護進程
- 30. 是否可以只安裝docker cli而不是守護進程
什麼logrotate的(1)? – anselm 2010-06-15 09:53:50