原创作者:运维工程师 谢晋
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 reload
echo "Nginx logs older than $DAYS_TO_KEEP days have been cleaned up."
-
保存脚本后,确保它具有可执行权限
chmod +x /path/to/clean_nginx_logs.sh
-
设置定时任务
crontab -e
0 2 * * * /path/to/clean_nginx_logs.sh
注意事项
日志切割:如果你使用 logrotate 来管理 Nginx 日志,可能不需要手动清理日志文件。logrotate 可以自动处理日志文件的轮转和删除。
Nginx 重载:在删除日志文件后,脚本会重新加载 Nginx 以确保日志文件被重新打开。如果你不使用 nginx -s reload,Nginx 可能会继续写入已删除的文件,导致磁盘空间未被释放。