在 Debian 系统上清理或管理 Nginx 日志(通常是 access.log 和 error.log),可以从手动清理、日志轮转、自动清理三个层面来做。下面按常用场景说明。
一般位于:
/var/log/nginx/
常见文件:
/var/log/nginx/access.log
/var/log/nginx/error.log
sudo truncate -s 0 /var/log/nginx/access.log
sudo truncate -s 0 /var/log/nginx/error.log
原因:Nginx 仍持有文件句柄,
rm后不会立刻释放磁盘空间。
sudo rm /var/log/nginx/access.log
可能导致:
Debian 默认已为 Nginx 配置 logrotate。
cat /etc/logrotate.d/nginx
典型内容示例:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1
endscript
}
| 参数 | 含义 |
|---|---|
| daily | 每天轮转 |
| rotate 7 | 保留 7 份 |
| compress | 压缩旧日志 |
| notifempty | 空文件不轮转 |
| reload nginx | 不中断服务 |
sudo logrotate -f /etc/logrotate.d/nginx
修改 /etc/logrotate.d/nginx:
size 100M
并去掉 daily 或改为:
daily
size 100M
rotate 30
access_log off;
error_log /dev/null;
修改后:
sudo nginx -t
sudo systemctl reload nginx
#!/bin/bash
find /var/log/nginx -name "*.log" -type f -exec truncate -s 0 {} \;
systemctl reload nginx
df -h
du -sh /var/log/nginx/*
| 场景 | 推荐方式 |
|---|---|
| 日常维护 | logrotate |
| 临时清理 | truncate |
| 防止磁盘爆满 | 限制日志大小 + 保留天数 |
| 高并发服务器 | 关闭 access_log 或采样 |
如果你愿意,可以告诉我:
df -h)我可以帮你给出最合适的清理方案。