AWS Opsworks:logrotate 它会自动运行吗?

AWS Opsworks: logrotate it runs automatically?

我已经配置了我自己的 logrotate(app logs)和编辑(nginx logs),所有这些都是在 recipes(chef)中创建的。我的问题是:logrotate 它会自动运行吗?

我问是因为我的日志大小不能超过 5MB,并且日志大小为 100MB。

显示 root 的 crontabs:

crontab -l
no crontab for root

/etc/logrotate.conf

weekly
su root syslog
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

通常,logrotate 运行 作为日常 cron 作业。您可以将 size 5Mdaily 添加到您感兴趣的日志的 logrotate 配置中。

日志有可能在每日 logrotate 运行 秒之间增长超过 5M。这可以通过降低大小值 and/or 运行 更频繁地进行 logrotate 来调整。

查看 man logrotate 了解更多详情。

如果您想在文件大小达到 5Mb 时立即轮换文件,只需将可执行文件放入 /etc/cron.hourly/ 文件夹中:

#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.d/nginx

如果这还不够,您可以像这样创建一个 crontab 作业:

*/30 * * * * root logrotate /etc/logrotate.d/nginx (每 30 分钟旋转一次)

首先你在错误的地方搜索。 Logrotate 是 cron 日常工作的一部分。

cron 作业在以下目录中 "/etc/cron.daily/logrotate"

您可以运行以下命令强制运行启用logrotate

sudo logrotate -v -f /etc/logrotate.conf

如果您希望日志在达到 5mb 时轮换,您应该在脚本中添加 size 值。

你应该有这样的东西:

/var/log/mylogs {
......
missingok
size=5M
create 0664 root utmp
rotate 3
}

这里 link to more details 介绍了如何轻松设置 logrotate。