美文网首页linux学习使用
Linux:磁盘空间占满解决

Linux:磁盘空间占满解决

作者: ___TheOne___ | 来源:发表于2023-10-06 15:07 被阅读0次

    关键词:
    df -h命令、
    du -h / | sort -h命令、
    rm -rf *.log.2023-08-*.gz命令、
    lsof | grep deleted命令、
    echo > /usr/local/nginx/logs/access.log命令

    1.背景

    双节(中秋节国庆节)后第一个工作日,现场反馈点餐后勤端昨天晚上还可以正常登录,但今天使用同样的账密,提示“账号密码错误!”,并且多次登录失败后,验证码图片也加载不出来了。

    2. 定位问题

    Step1:
       首先猜测是哪位管理员把密码悄悄变更了,但是没有通知。后来通过去点餐线上数据库中查询,发现账密均正确。所以排除了这种可能。
       另外,还额外查看了线上的3台线上服务器,服务进程都正常启动着。
       除此之外,额外发现一个现象:线上的3台服务器的 manage.log,使用tail命令实时打印,发现登录请求日志打印很少,偶尔不打印。

    Step2:
       后来经过同事提醒,使用df -h命令查看了下服务器磁盘,发现磁盘占用100%了。因为磁盘满了导致日志无法写入、验证码图片无法展示出来,影响了正常的业务执行。

    3. 解决

       既然磁盘占用100%了,使用du -h / | sort -h命令,查找磁盘大文件(一般是业务发布备份jar包、业务logs日志、nginx的access.log等)。
       后来经过排查,
    Step1:
    业务日志/opt/touchorderv3/apps/logs
    因为日志很多,无法一个一个使用echo > xxx.log命令,所以使用了rm -rf *.log.2023-08-*.gz命令。但是删除完毕后,df命令查看时磁盘还是占用很多,使用lsof | grep deleted命令查看很多已经删除了,但是因为服务进程id关联,导致磁盘空间未真正释放。后来下了华为云负载,kill/restart下服务进程即可。
    Step2:
    nginx的访问日志/usr/local/nginx/logs/access.log占用空间很大,高达5.7G。使用echo > /usr/local/nginx/logs/access.log命令。清空指定文件的内容,而不必删除文件或重启nginx。新的日志继续追加在文件中,但之前的内容被清空。

    4. 文章参考

    1. Linux系统通过df和du查看磁盘使用的大小不一致问题及解决方法

    相关文章

      网友评论

        本文标题:Linux:磁盘空间占满解决

        本文链接:https://www.haomeiwen.com/subject/itopbdtx.html