侧边栏壁纸
  • 累计撰写 119 篇文章
  • 累计创建 25 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

删除大量文件时Argumentlisttoolong错误解决

梁来福
2023-02-04 / 0 评论 / 0 点赞 / 0 阅读 / 1079 字
温馨提示:
本文最后更新于 2024-05-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、前言

Linux下删除一个目录下的文件如果过多的话,就会提示:Argument list too long

2、问题复现

[root@Laifu-Blog ~]#rm -rf laifu*

出现错误:
Argument list too long

3、分析

这是Linux的shell参数个数限制,该错误表示执行命令的参数太长,超过系统允许的最大值

这个值通过ARG_MAX变量获取,命令如下:

[root@Laifu-Blog ~]#getconf ARG_MAX
2097152

这个数值不同机器上的设置可能不同, 和系统也有关系。

4、问题解决

4.1 方案1 内核

修改ARG_MAX的值,这个值是没办法直接修改的,需要重新编译Linux内核,手动调整。

打开kernel source下面的include/linux/binfmts.h文件,找到如下行:

# define MAX_ARG_PAGES  32

将”32“改为更大的值,例如64或128,然后重新编译内核。

此种方法永久有效,可以彻底解决问题,但是比较复杂,推荐给高级用户使用,没有Linux经验的用户不建议用这种方法

4.2 方案2 xargs

ls | grep laifu* | xargs rm -f

为什么 xargs 就能执行成功呢?

因为 xargs 会把参数分批传递给 rm , 这样的话就没有了参数超限的问题了。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
博主关闭了所有页面的评论