Linux 日志轮转(Log Rotation)
1.创建文件
/etc/logrotate.d/test
2.test 文件内容
/var/www/your-project/logs/ban.log {
daily # 每天执行一次轮转(把当前日志更名,新开一个空文件)
missingok # 如果日志文件丢失了,不要报错
rotate 7 # 保留最近 7 天的日志,超过 7 天的旧日志会被自动删除
compress # 对旧日志进行 gzip 压缩,节省硬盘空间
notifempty # 如果日志是空的,就不进行轮转
create 0644 www-data www-data # 创建新日志文件时的权限和所属用户(需匹配你 Web 服务器的用户)
}
# nignx 日志
/home/wwwlogs/*.log {
monthly # 按月轮转
rotate 6 # 保留 6 份(即半年)
size 30M # 文件超过 30M 时触发轮转(即使不到一个月也会切分)
missingok # 如果日志文件丢失,忽略错误
notifempty # 如果日志为空,不进行轮转
compress # 启用压缩,节省空间
delaycompress # 延迟压缩(下一次轮转再压缩旧文件,防止 Nginx 还没释放句柄)
dateext # 使用日期作为后缀(方便识别是哪个月的)
dateformat -%Y%m%d # 日期格式
sharedscripts # 所有的日志轮转完后只执行一次脚本
#指令块:检查进程pid文件是否存在 & 触发重新打开日志的USR1信号
postrotate
[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
3.执行配置文件
logrotate -d /etc/logrotate.d/nginx_custom # 测试
logrotate -f /etc/logrotate.d/nginx_custom # 强制立即执行
4.无需重启服务。系统每天会自动运行一次 logrotate 任务。
logrotate 就像一个“勤杂工”,定期把旧日志打包压缩,并删除太久远的日志。

浙公网安备 33010602011771号