聊聊 Linux Argument list too long 问题的N种解法




一、遇到问题

作为一个 Linux 玩家,想必你也曾遇到过以下错误提示:

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



二、问题原因

Argument list too long” 这个错误,字面意思是参数列表过长
通常在用户在一行命令中提供了过多的参数(比如 ls/cp/rm * 等) 的时候出现;

那么,何为过长?
或者说提供多少个参数才不会触发 “Argument list too long” 呢?

可以通过 getconf ARG_MAX 查看 Linux 系统的这个限制:

:~> getconf ARG_MAX
2097152



三、准备测试环境

由于实测创造几百万个文件比较耗时,
为了加快测试节奏,减少等待时间,
这里将测试删除的样本文件数,设计为: 30万个

产生 30万 个测试文件的方法如下:

time for i in `seq 1 300000`; do echo 0 > test$i; done



四、低效解决办法

如果不讲究删除速度的话,这里介绍几种比较低效的删除方法。


1、shell 循环删除

1.1 删除方法解析

实现一个 shell 循环,来逐个删除,也算是个比较低效的办法;

for i in $(echo *)
do 
    rm  -f  $i
done

1.2 删除速度实测

实测删除 30 万个文件,耗时为: 83m48.477s

time  for i in $(echo *);do rm  -f  $i; done;
real	83m48.477s
user	42m55.000s
sys	    21m50.788s

2、 find -exec

2.1 删除方法解析
find . -type f 
  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值