美文网首页
查找linux服务器硬盘占用

查找linux服务器硬盘占用

作者: 秋未 | 来源:发表于2023-11-06 14:54 被阅读0次

    背景

    在服务运行过程中,难免会大量产生日志文件与临时文件,在目录用量大于90%时,服务器监测会进行报警。因此,如何定位到这些占用大量硬盘文件的位置并定时清除则尤为重要。

    操作步骤

    1. 根目录全局查找

    df -h
    

    查询到根目录下的各目录用量

    [root@11-11-1-11.test-service] df -h
    Filesystem                                  Size  Used Avail Use% Mounted on
    /dev/mapper/docker                           50G   40G   44G  90% /home
    /dev/sda3                                   732G  274G  422G  40% /etc/hostname
    shm                                         2.0G     0  2.0G   0% /dev/shm
    

    可以看到/home目录已占用90%以上,故定为到此处为用量报警的原因。

    2. 进一步查询

    du -h /home --max-depth=1 | sort -hr | head -n
    
    [root@11-11-1-11.test-service ~] du -h /home --max-depth=1 | sort -hr | head -n 10
    16G     /home/service
    16G     /home
    56M     /home/agent
    20K     /home/amy
    16K     /home/ops
    16K     /home/lost+found
    

    可以看到/home/service目录为占用量较大的目录,继续查询其下的用量情况

    du -h /home/service/ --max-depth=1 | sort -hr | head -n 10
    
    [root@11-11-1-11.test-service service] du -h /home/service/ --max-depth=1 | sort -hr | head -n 10
    16G     /home/service/
    15G     /home/service/var
    846M    /home/service/app
    4.0K    /home/service/scripts
    4.0K    /home/service/common
    

    同样的方式继续向下查询,直到定位到具体文件

    [root@11-11-1-11.test-service privacy]  du -h /home/service/var/logs/privacy/ --max-depth=1 | sort -hr | head -n 10
    13G     /home/service/var/logs/privacy/
    6.5G    /home/service/var/logs/privacy/task
    6.5G    /home/service/var/logs/privacy/privacy_ts
    41M     /home/service/var/logs/privacy/http-log
    [root@11-11-1-11.test-service privacy] cd task/
    [root@11-11-1-11.test-service task] ll
    total 6782132
    -rw-rw-r-- 1 service service 196480297 Oct  8 23:59 task-2023-10-08.log
    -rw-rw-r-- 1 service service 201108677 Oct  9 23:59 task-2023-10-09.log
    -rw-rw-r-- 1 service service 206364534 Oct 10 23:59 task-2023-10-10.log
    -rw-rw-r-- 1 service service 209198277 Oct 11 23:59 task-2023-10-11.log
    -rw-rw-r-- 1 service service 212050054 Oct 12 23:59 task-2023-10-12.log
      .
      .
      .
    

    查到有大量的log文件,这里就是导致用量过大的原因

    3. 删除log文件

    [root@11-11-1-11.test-service task] rm -f *.log
    

    再次执行查询总量

    [root@11-11-1-11.test-service ~] df -h
    Filesystem                                  Size  Used Avail Use% Mounted on
    /dev/mapper/docker                           50G    4G   44G   9% /home
    /dev/sda3                                   732G  274G  422G  40% /etc/hostname
    shm                                         2.0G     0  2.0G   0% /dev/shm
    

    至此,/home目录下的用量问题解决

    4. 补充

    如果我们想只删除目录中大于多少兆的文件,可以参考如下步骤
    首先我们先创建两个大文件,一个50M,一个100M

    [root@11-11-1-11.test-service /] mkdir test
    [root@11-11-1-11.test-service /] cd test/
    [root@11-11-1-11.test-service /] dd if=/dev/zero of=test-big1 bs=1M count=0 seek=50
    [root@11-11-1-11.test-service /] dd if=/dev/zero of=test-big2 bs=1M count=0 seek=100
    

    查看创建的文件

    [root@11-11-1-11.test-service test] ll -h
    total 0
    -rw-r--r-- 1 root root  50M Nov  7 15:07 test-big1
    -rw-r--r-- 1 root root 100M Nov  7 15:07 test-big2
    

    查找大于50M的文件

    find /test -type f -size +50M
    

    结果如下

    [root@11-11-1-11.test-service test] find /test -type f -size +50M
    /test/test-big2
    

    删除大于50M的文件

    find /test -type f -size +50M -exec rm -rf {} \;
    

    再执行查询后

    [root@11-11-1-11.test-service test] ll -h
    total 0
    -rw-r--r-- 1 root root  50M Nov  7 15:07 test-big1
    

    至此,大于50M的文件就被我们删除了

    相关文章

      网友评论

          本文标题:查找linux服务器硬盘占用

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