nginx定期清理日志
原创作者:运维工程师 谢晋
nginx定期清理日志
- 创建脚本clean_nginx_logs.sh
# vi clean_nginx_logs.sh#!/bin/bash# 定义日志文件路径
LOG_DIR="/var/log/nginx"
ACCESS_LOG="access.log"
ERROR_LOG="error.log"# 定义保留日志的天数
DAYS_TO_KEEP=7# 清理访问日志
find $LOG_DIR -name "$ACCESS_LOG*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \;# 清理错误日志
find $LOG_DIR -name "$ERROR_LOG*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \;# 重新加载 Nginx 以重新打开日志文件
nginx -s reloadecho "Nginx logs older than $DAYS_TO_KEEP days have been cleaned up."
- 保存脚本后,确保它具有可执行权限
# chmod +x /path/to/clean_nginx_logs.sh
- 设置定时任务
# crontab -e0 2 * * * /path/to/clean_nginx_logs.sh
注意事项
日志切割:如果你使用 logrotate 来管理 Nginx 日志,可能不需要手动清理日志文件。logrotate 可以自动处理日志文件的轮转和删除。
Nginx 重载:在删除日志文件后,脚本会重新加载 Nginx 以确保日志文件被重新打开。如果你不使用 nginx -s reload,Nginx 可能会继续写入已删除的文件,导致磁盘空间未被释放。