Linux下删除大量文件的方法,Argument list too long报错解决办法

来自:互联网
时间:2020-09-19
阅读:

Linux用rm -rf * 删除php ci的sess_save_path文件夹下的文件时报错

-bash: /bin/rm: Argument list too long

删除文件中包含的小文件数量过多,通常是由于受到 shell 参数个数限制所致。

这个是Linux系统存在的限制,可以通过如下指令查看该参数值的配置:

getconf ARG_MAX

解决办法:

可以通过如下方式尝试删除(都需要先cd到对应目录下执行)

1.使用 awk 删除:

ls -l| awk '{ print "rm -f ",$9}'|sh

2.通过 ls 来配合 xargs 删除 test 目录下的所有文件:

ls |xargs rm -r

3.通过 find 来完成,更加安全智能,支持的参数更多。

find /usr/local/tests/ -name "*.jpg" |xargs rm -r

find . -name "ci_session*" | xargs rm -rf "ci_session*"

用WinSCP上传文件时报错:

一般错误(服务器应该提供错误描述)。

错误码:4

服务器返回的错误消息:FAIlure

错误码4的常见原因:

- 将文件重命名为一个已经存在的文件。

- 创建一个已经存在的目录。

- 将远程文件移动到一个不同的文件系统(HDD)上。

- 将文件上传到一个满的文件系统(HDD)上。

- 达到了用户磁盘限额。

=================

实战详细过程:

#df -lh

查看空间只使用了78%,还有足够的系统空间可以利用

# du -hs /home/wwwroot/

9.5G    /home/wwwroot/

这个放php代码的目录竟然有9.5G了,可能有大量session文件没有清理掉导致的

 

删掉/home/wwwlogs/日志文件了还是登陆不了,

session文件估计有很多,ls 命令很久了都还没有返回结果

估计要把这session文件也删掉才行

跟时间没关系的,主要是php的每次他会生成一个文件,然后不会自动删掉,要弄个脚本定时删掉才行了

应该是放session那个文件夹下的文件数量超过了65536个 最大的限制了

其他的 都可以用rm -rf * 删除的,有可能是这个网站的给攻击了短时间内产生大量的无用session

从ci_session9删到ci_session0还没有删完,还有字母a-z开头的,这么多必须得写个脚本删除才行了

文件多了导致分分的都登录不了,删了一部分后才能登录

session文件太多了,没有自动删除的

----------

# du -hs /home/wwwroot/zdztest/

569M    /home/wwwroot/zdztest/

# cd /home/wwwroot/zdztest/public/sess_save_path

# find . -name "ci_session*" | xargs rm -rf "ci_session*"

# du -hs /home/wwwroot/zdztest/

153M    /home/wwwroot/zdztest/

----------

# pwd

/home/wwwroot/zdztest/public

# ls -lh

total 142M

drwxr-xr-x 2 www www 142M May  9 18:33 sess_save_path

#sess_save_path这个文件夹上次异常了导致占空间比较大,需要删掉才能释放空间

# rm -rf *

# ls -lh

total 4.0K

# du -hs /home/wwwroot/

120M    /home/wwwroot/

返回顶部
顶部