众所周知,Linux文件系统中inode编码是指向磁盘block的唯一编号,若服务器遭入侵或日志文件将磁盘inode资源编号耗尽,新数据无法获取inode编号导致无法存储。举例说明:在磁盘中/boot独立分区中查看现有inode资源并通过for循环创建大量文件占用耗尽inode编号,导致磁盘无法写入内容,最后进行处理故障。
[root@CentOS7 ~]# df -i /boot/ #查看inode编号
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1024064 38 1024026 1% /boot
[root@centos7 ~] for i in {358..1024500}; do touch file$i;done
[root@centos7 ~]# df -i /boot #发现inode占满
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1024064 1024064 0 100% /boot
[root@centos7 ~]# cd /boot
[root@centos7 boot]# touch 123.txt #创建文件无法成功
touch: cannot touch ‘123.txt’: No space left on device
方法一:通过传统方式利用for循环删除文件,但是比较缓慢
[root@centos7 ~] for i in {950000..1024500}; do rm -rf file$i;done #一点的删除
方法二:利用传参数的方法快速有效的删除文件
[root@centos7 boot]# ls file{400000..500000}|xargs rm 最为有效的方法,传参数
[root@centos7 boot]# ll file{600000..700000}|xargs rm ll列出的参数过多,传给rm
ls: cannot access file600000: No such file or directory 时,rm不识别,因此通过
rm: invalid option — ‘w’ ls显示出独立的文件名进
Try ‘rm –help’ for more information. 行传递。
rm: invalid option — ‘w’
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146458.htm