![Logrotate - 如何改变它以使其永远不会删除日志并且每 6 个月创建一个 .gz?](https://linux22.com/image/659101/Logrotate%20-%20%E5%A6%82%E4%BD%95%E6%94%B9%E5%8F%98%E5%AE%83%E4%BB%A5%E4%BD%BF%E5%85%B6%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E5%88%A0%E9%99%A4%E6%97%A5%E5%BF%97%E5%B9%B6%E4%B8%94%E6%AF%8F%206%20%E4%B8%AA%E6%9C%88%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%20.gz%EF%BC%9F.png)
我读过手动旋转,但我仍然不清楚。我的问题主要与 NGINX Web 服务器日志有关。
这是我当前的logrotate.conf:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# 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
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
在 /etc/logrotate.d 中我还有其他内容:nginx:
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
以下是我能看到的一些 .gz:
access.log-20150430.gz
access.log-20150509.gz (created after ~10 days)
access.log-20150524.gz (created after ~15 days)
access.log-20150528.gz (created after ~4 days)
- 为什么 .gz 日志创建得如此频繁,且时间范围如此“随机”?
- 我应该进行哪些更改才能每 6 个月创建新的 .gz 文件和/或 .log 文件大于 100MB 之后创建?
- 和旋转 10这是否意味着如果我已经有 10 个 .gz 文件,那么当压缩第 11 个时,它会自动删除最旧的 .gz 文件?如果是,我该如何避免删除日志文件?我必须保留它们,即使它们很旧。
- 有什么区别日常的和旋转 10?
- 这些文件的创建权限可以吗?
- 在我对 logrotate.conf 进行某些更改后,我是否应该重新启动某些服务,或者是否应该立即应用这些更改?
答案1
我认为 logrotate 手册对您的大部分观点都很清楚。以下是我的答案:
- 使用
daily
会导致日志轮换每天都发生。因此,您需要检查为什么它没有每天发生。例如,notifempty
如果日志文件几天都是空的,这可能是由其他选项引起的。 - 我找不到每 6 个月执行一次的选项,但您有
monthly
和yearly
。对于尺寸配置,您可以使用size 100M
。 - 是的。要保留所有值,您可以选择一个非常大的值。
daily
指定轮换频率并rotate
指定保留的日志文件数量。- 如果日志不包含敏感信息(其他人可以读取),那就没问题。
- 不,您不需要重新启动任何程序。