Logrotate

logrotate 在 postrotate 和 compression 之間等待多長時間

  • June 21, 2016

我正在編寫一個軟體,當程序從 logrotate 之類的東西獲得 SIGHUP 時,我想重新載入日誌文件。問題是,在 logrotate 開始壓縮旋轉的日誌文件之前,應用程序可以使用多長時間?

手冊頁和我找到的所有參考資料只是聲明應用程序必須“立即”重新載入日誌,但沒有說明這是否必須在 1 毫秒或 1 秒內完成。

為了安全起見:根本沒有。

Logrotate 假設一旦 postrotate 命令完成,日誌文件將不再被寫入。有兩種方法可以處理“關閉日誌文件可能需要一段時間”:

  • logrotate 的delaycompress選項將壓縮步驟推遲到下一次logrotate 呼叫。這樣,下一次 logrotate 執行可能需要多長時間(儘管這樣做是一個非常糟糕的主意)。
  • 您可以編寫一個命令行工具來告訴守護程序關閉並重新打開日誌文件,並確保在守護程序確認所有日誌文件已關閉之前此命令不會退出(它不需要等到它們’也已重新開放,儘管這並沒有什麼壞處)。然後人們可以從 logrotate 的postrotate節中使用這個命令行工具。

引用自:https://unix.stackexchange.com/questions/291194