解决 /bin/rm: Argument list too long

jackxiang 2013-6-9 14:39 | |
背景:前两天对外包的PHP返回慢作了一个xdebug的统计,后来尽管加上了那个rm的crontab,但是后来发现日志依旧在,还是运维发现,上了30G了。
后来查了下crontab的日志文件,发现:


配置:
一:Crontab定时删除,1小时删除一次:


三分钟一清,试过一小时一清,都3G左右大小了:


二:应该是生成的xdebug日志文件太多了造成的(1小时一次有点长了),这个文件删除不了:

出现:Argument list too long。

三:网上找了下,摘录如下:
cache目录,谁知道输入
rm *
的命令后,大概几秒后屏幕就跳出
/bin/rm: argument list too long
条件反射动作,上百度和google查找,找到解决方法和原因,原因是一个文件夹下文件太多,使用rm删除就会出现/bin/rm: Argument list too long错误.
解决方法:http://hintcnuie.javaeye.com/blog/431354
按网址上面写的输入
ls | xargs -n 10 rm -fr ls
就解决了,这句解释为:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除,这样就不会超过命令行的长度了.
另外找到用脚本的方法:
for loop in `ls 目录路径`
do
rm -f $loop
done
注意:$loop是删除的文件名,确保路径是否正确。
但这个还没有实验过。
来自:http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0614/1538.html
第二种方法:
当某个文件夹下的文件太多,不能使用rm删除
# rm * -rf
-bash: /bin/rm: Argument list too long
网上找了个方法,贴上来给大家分享
find PATH -name *.mp3 -exec rm {} \;
如,要删除 /tmp/123/abc 目录下的
find  /tmp/123/abc ‘*’ -exec rm {} \;
如当前目录为 /tmp/123 ,想删除 /tmp/123/abc 下的
find  ./abc  -name ‘*’ -exec rm {} \;
  大家可以自己试试,不过要小心处理,别删错重要文件了!!!
来自:http://linux.chinaitlab.com/administer/805334.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6432/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-11-7 15:00
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]