Linux

logrotate:保留 N 個最新文件,但不重命名

  • February 12, 2021

我有一個服務,它會在啟動時自動創建一個日誌文件,文件名中帶有時間戳。因此,我不需要 logrotate 來重命名/複製/創建文件,但我想要的是 logrotate 只保留這些文件中的三個最新文件(並且可以選擇壓縮它們)。我能以某種方式做到這一點嗎?

我不確定您是否可以使用logrotate. 您可以將以下內容作為日常 cron 作業執行:

rm $(ls -t | sed -e '1,3d')

我不認為它可以完全按照你的意願去做。如果您仍想首先使用 logrotate,您需要指定 logrotate 輪換日誌的頻率(每天/每週/每月/每年)。你可以這樣設置:

# rotate log files daily
daily

# Log files are rotated count times before being removed or mailed to the address
# specified in a mail directive. If count is 0, old versions are removed rather than 
# rotated.
rotate 3

# Old versions of log files are compressed with gzip(1) by default.
compress

但正如@quanta 所寫,它可能無法用 logrotate 完成。您將使用我上面寫的一些類似的設置,或者您可能需要使用其他工具。

引用自:https://serverfault.com/questions/430167