温馨提示×

linux怎么清理nginx日志

小樊
45
2026-09-11 13:24:53
栏目: 智能运维

在 Linux 下清理 Nginx 日志,常见做法有直接删除/截断和使用 logrotate 自动管理两种。下面按实用场景说明。


一、手动清理 Nginx 日志

1. 查看日志位置

通常日志在:

/var/log/nginx/access.log
/var/log/nginx/error.log

查看配置确认:

nginx -T 2>/dev/null | grep -E "access_log|error_log"

2. 清空日志(推荐,不删文件)

不要直接 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

3. 删除旧日志文件

如果是带日期的日志:

sudo rm -f /var/log/nginx/access.log.*

二、让 Nginx 重新打开日志(重要)

如果 Nginx 还在运行,清空后最好重开日志:

sudo nginx -s reopen

或:

sudo systemctl kill -s USR1 nginx

三、使用 logrotate 自动清理(推荐)

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 运行中移动日志文件


如果你告诉我:

  • 系统(CentOS / Ubuntu / Alpine)
  • 是否用了 Docker
  • 日志有多大

我可以给你更精确的命令。

0 踩