在 Linux 下清理 Nginx 日志,常见做法有直接删除/截断和使用 logrotate 自动管理两种。下面按实用场景说明。
通常日志在:
/var/log/nginx/access.log
/var/log/nginx/error.log
查看配置确认:
nginx -T 2>/dev/null | grep -E "access_log|error_log"
不要直接 rm,否则 Nginx 可能继续写旧 inode。
✅ 正确方式(截断):
sudo truncate -s 0 /var/log/nginx/access.log
sudo truncate -s 0 /var/log/nginx/error.log
或:
sudo > /var/log/nginx/access.log
sudo > /var/log/nginx/error.log
如果是带日期的日志:
sudo rm -f /var/log/nginx/access.log.*
如果 Nginx 还在运行,清空后最好重开日志:
sudo nginx -s reopen
或:
sudo systemctl kill -s USR1 nginx
Nginx 通常已自带 logrotate 配置:
/etc/logrotate.d/nginx
示例配置:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
sudo logrotate -f /etc/logrotate.d/nginx
df -h
du -sh /var/log/nginx
❌ rm access.log 后不重启 Nginx
❌ 直接删 PID 文件
❌ 在 Nginx 运行中移动日志文件
如果你告诉我:
我可以给你更精确的命令。