nginx日志磁盘空间使用率100%

584 阅读1分钟

1、问题描述

服务器提示磁盘满了,表现如下: 在这里插入图片描述 经查看是nginx服务器,使用 df -h 命令如下: 在这里插入图片描述

考虑是被nginx日志撑满,查看日志文件大小 在这里插入图片描述 问题确定,所以删除日志。

2、正确删除日志

echo " " > ./error.log

在这里插入图片描述

3、错误删除方式、原因、解决方法

  1. 错误删除方式 使用rm -f删除或者xftp右键删除,删除之后云盘使用率并没有发生变化。

  2. 原因 在linux中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),然而如果文件是被打开的(有进程正在使用或者不断写入),那么进程将可以继续读取该文件,磁盘空间也会一直被占用无法释放。nginx日志文件在删除的时候文件正在被使用;

  3. 解决 网上大部分资料说的都是直接重启nginx服务,没用!!! 重启之后,是可以直接生成新的日志文件的,但原本的日志文件占用问题并没有解决 正确方案:重启之后,杀掉使用nginx旧日志文件的进程

  4. 安装lsof
    yum install lsof

  5. 查看使用nginx日志的进程
    lsof |grep deleted [root@local ~]# lsof |grep deleted nginx 4401 nobody 38w REG 253,0 19304448 10835682 /var/nginx/logs/error.log (deleted)

  6. 解决:kill 4401 即可删除error.log占用的问题。

清理正在被读写的大日志文件时,直接使用 echo "" > ./xxx.log 命令,即直接将文件置空,并不影响服务的使用,文件大小也被控制下来,磁盘空间也释放了。