Logrotate

僅使用 logrotate 刪除文件

  • November 22, 2018

我有一個每小時輪換一次自己的日誌文件的應用程序。每個小時我都想刪除n幾天前的所有文件。logrotate由於商業政策,我不得不這樣做。

那麼logrotate每小時執行這個命令相當於什麼?

find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;

這是一種可能性,您需要測試:

cat /etc/logrotate.d/customapp

/var/log/app/*.old {
   daily
   missingok
   rotate 0
   notifempty
}

為什麼旋轉 0 ?

如果 count 為 0,則刪除舊版本而不是輪換。(來源:男人)

logrotate每天執行一次,腳本可以在這裡找到/etc/cron.daily/logrotate(在 CentOS 7 上)。如果要每小時執行一次,首先需要將其移至/etc/cron.hourly/. 然後對於上述命令,等效logrotate腳本可能如下所示,

$ cat /etc/logrotate.d/app

/var/log/app/*.old {
 hourly
 rotate 0
 firstaction
   /usr/bin/find /var/log/app/ -name "*.old" -mtime +1 -delete
 endscript
 nocreate
 missingok
 notifempty
}

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