Centos
logrotate 不尊重旋轉參數
我在使用 logrotate 時遇到了一些麻煩,它似乎並沒有按照我的意思去做。
環境:
- 美分6.4
- 登錄旋轉 3.7.8
我的 /etc/logrotate.conf 文件有以下內容:
# rotate log files weekly daily # keep 4 weeks worth of backlogs rotate 30 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file # dateext # uncomment this if you want your log files compressed compress compresscmd /usr/bin/bzip2 uncompresscmd /usr/bin/bunzip2 compressext .bz2 # RPM packages drop log rotation information into this directory include /etc/logrotate.d
我遇到問題的logrotate文件是這個(對於elasticsearch,位於/etc/logrotate.d/elasticsearch):
/var/log/elasticsearch/*.log { missingok notifempty copytruncate postrotate rm -rf /var/log/elasticsearch/*.log.$(date +%Y)* size 1k rotate 7 daily }
首先,它不尊重我的
rotate 7
配置,當我執行時logrotate -d /etc/logrotate.conf
,我得到一條線說:旋轉日誌 /var/log/elasticsearch/gravity-es-prod02.log,log->rotateCount 為 30
…還有一堆聲明說它正在旋轉 30 個不同的 *.bz2 文件。
gravity-es-prod02.log.2015-12-01
其次,儘管沒有啟用 dateext,但我仍然得到一個名為(以及自上次手動清理以來的任何以前的日期)的日誌文件。這些也沒有得到清理,所以我添加了 postrotate 行來手動清理它,但顯然這也不能正常工作。編輯 執行 logrotate 腳本的 cron 文件非常標準:
#> cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
我在您提供的腳本中發現了一個錯誤(缺少 endscript):
postrotate rm -rf /var/log/elasticsearch/*.log.$(date +%Y)* endscript
我相信這部分失敗了,並且以某種方式為此日誌模式應用了全域設置。