查找linux服务器硬盘占用

2023-11-06  本文已影响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的文件就被我们删除了

上一篇下一篇

猜你喜欢

热点阅读