Linux下删除大量文件的方法,Argument list too long报错解决办法
导读
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/