试图了解如何配置单独的logrotate配置

时间:2019-06-26 08:43:14

标签: ubuntu cron logrotate

如果我误解了这些东西的工作原理,我深表歉意。

我尝试设置自己的logrotate每小时配置,该配置似乎并未在cron选项卡中生效。

我将在文件下方提供,如果有人能指出我犯的错误,我将非常感谢。

/etc/logrotate_hourly.d/upstart

/var/log/upstart/*.log {
    hourly
    copytruncate
    missingok
    size 1M
    rotate 1
    compress
    notifempty
    nocreate
}

/etc/logrotate_hourly.d/nginx

/var/log/nginx/*.log {
    hourly
    missingok
    rotate 0
    size 200M
    compress
    notifempty
    sharedscripts
        postrotate
        [ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid`
        endscript
}

/etc/logrotate_hourly.conf

# see "man logrotate" for details
# rotate our custom log files hourly
hourly

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

# packages drop log rotation information into this directory
include /etc/logrotate_hourly.d

/etc/cron.hourly/logrotate

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate_hourly.conf

按预期运行以下作品:

sudo logrotate -f /etc/logrotate_hourly.conf

Runnin也可以:

sudo /usr/sbin/logrotate /etc/logrotate_hourly.conf

但是cron /每小时logrotate似乎从未发生过。
到处都读到人们说“您无需重新启动服务,也无需重新启动即可使新的logrotate生效”。
我发现有人说他们在更改配置和重新启动方面取得了成功。每个人都错了还是他很幸运?
我试图避免重新引导,因为我们为亚马逊的aws自动缩放构建图像,因此它只是旋转快照。

1 个答案:

答案 0 :(得分:0)

Hourly没什么可logrotate的,它不是有效的指令。 Man:

  

通常,logrotate作为日常cron作业运行。它不会修改   一天记录多次,除非该记录的标准是   根据日志的大小和logrotate分别运行多次   天,或者除非使用-f或--force选项。

我已经说明了您如何做这种事情here。两者的区别在于,您无需使用-f强制旋转,而是需要根据日志大小(仅基于日志大小)进行旋转。