Logrotate
僅使用 logrotate 刪除文件
我有一個每小時輪換一次自己的日誌文件的應用程序。每個小時我都想刪除
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 }