收到告警服务器磁盘只读了,登上去看发现是 inode 被耗尽了,这里记录下查找方法。
脚本如下
[root@imzcy ~]# cat zcy_find_inode.sh
#!/bin/bash
# auther: imzcy
# site: https://www.imzcy.cn
zcy_path="$1"
for i in $(find $zcy_path -type d -maxdepth 1 2>/dev/null |grep -v '^'"$zcy_path"'$')
do
echo $i
find $i -type f |wc -l
done |awk '{if(NR%2!=0)ORS=" ";else ORS="\n"}1' |awk '{printf "%-20s %s\n",$1,$2}' |sort -k 2 -nr
[root@imzcy ~]# 使用方法
第一次查找时指定 $1 的值为从 / 开始查找,后续看输出中哪个一级目录的占用高,就调整为哪个子目录。
[root@imzcy ~]# chmod u+x zcy_find_inode.sh
[root@imzcy ~]# ./zcy_find_inode.sh /
/usr 236073
/var 95098
/proc 45938
/sys 42408
/www 36179
/root 13560
/data 5131
/etc 1748
/opt 1556
/run 640
/boot 316
/home 34
/tmp 9
/dev 4
/.Recycle_bin 1
/patch 1
/srv 0
/mnt 0
/media 0
[root@imzcy ~]#
[root@imzcy ~]# ./zcy_find_inode.sh /usr
/usr/local 161046
/usr/lib 26464
/usr/share 23901
/usr/src 11945
/usr/lib64 7781
/usr/include 3419
/usr/bin 858
/usr/sbin 352
/usr/libexec 307
/usr/games 0
/usr/etc 0
[root@imzcy ~]#
[root@imzcy ~]# ./zcy_find_inode.sh /usr/local
/usr/local/lib 147646
/usr/local/mysql-5.6.28-linux-glibc2.5-x86_64 10049
/usr/local/jdk1.8.0_112 1623
/usr/local/openssl 477
/usr/local/curl 451
/usr/local/include 311
/usr/local/share 209
/usr/local/groovy-3.0.7 133
/usr/local/bin 73
/usr/local/libiconv 60
/usr/local/insightface 13
/usr/local/man 1
/usr/local/src 0
/usr/local/sbin 0
/usr/local/nginx 0
/usr/local/libexec 0
/usr/local/lib64 0
/usr/local/games 0
/usr/local/etc 0
/usr/local/bttomcat 0
/usr/local/btjdk 0
[root@imzcy ~]#单行命令查找
zcy_path=/ && for i in $(find $zcy_path -type d -maxdepth 1 2>/dev/null |grep -v '^'"$zcy_path"'$') ; do echo $i && find $i -type f |wc -l ; done |awk '{if(NR%2!=0)ORS=" ";else ORS="\n"}1' |awk '{printf "%-20s %s\n",$1,$2}' |sort -k 2 -nr
本文采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
如果您的问题未解决,欢迎微信扫描右侧二维码与我联系。