今天老王遇到了一个问题,一台 Linux 服务器上,某个目录中,rm 和 ls 命令全部没有反应,既不能显示这个目录中有多少文件,也不能直接删除文件,检查了服务器正常,磁盘容量也足够。本文分享下解决方法和解决过程。
一、问题原因
如果你 Linux 服务器功能正常,在其他目录也能正常 rm
和 ls
,单独只有这一个文件夹有这个问题,那么导致这个问题的原因多半是因为目录中文件太多了,在网上搜了下,如果目录中文件数量超过 10000,那么就不能使用 rm -rf *
来删除了,会返回 Argument list too long
的错误。
二、解决方法
解决方法一、
一般来说配合 ls
来执行 rm
命令就能解决大部分因文件太多而无法删除的问题了,命令如下:
ls |xargs rm -r
但是老王这个情况是连 ls
命令都没有响应,所以有了解决方法二。
解决方法二、
先放方法:
find . > tmpfile , #删除tmpfile中第一行. 然后: cat tmpfile | xargs rm -f
老王的整个解决过程如下图所示,先生成了 tmpfile
,然后用 wc
命令看了下总共有多少文件,不看不知道,一看吓一跳,10000 个文件就不能用 rm
删除了,我这个目录下居然有 240 万个文件,然后用第二个命令开始删除,删了 5 分钟都没有反应,所以手动停了(ctrl + c),又生成了一个 tmpfile1
文件,看了下还有 140 万个文件,之后继续删 5 分钟就成功把所有文件都删除了。