精华内容
下载资源
问答
  • 删除文件过多时,会出现Argument list too long的错误; 2、解决办法 2.1、xargs命令结合find使用 find /applogs/* -name "*" | xargs rm -rf '*' 2.2、find -exec 遍历,然后执行删除 find /applogs/* -type f ...

    1、背景

    在删除文件过多时,会出现Argument list too long的错误;

    2、解决办法

    2.1、xargs命令结合find使用

    find /applogs/* -name "*" | xargs rm -rf '*'
    

    2.2、find -exec 遍历,然后执行删除

    find /applogs/* -type f -exec rm {} \;
    
    展开全文
  • Linux文件删除但空间不释放问题篇

    千次阅读 2020-09-23 19:27:25
    如果是inode资源占用完,是因为使用的小文件过多导致的。但如果是磁盘空间满,我们需要删除文件,挤出空间来,但发现磁盘空间根本没减少。这就需要了解rm删除文件原理。 rm删除文件原理 Linux是link的数量来控制文件...

    通常报磁盘不足的错误,有两个原因:
    •磁盘空间满:可以通过df -h命令查看磁盘的使用情况。
    •磁盘inode资源占用完:可以通过df -i命令查看,确认inode节点使用率;

    如果是inode资源占用完,是因为使用的小文件过多导致的。但如果是磁盘空间满,我们需要删除文件,挤出空间来,但发现磁盘空间根本没减少。这就需要了解rm删除文件原理。

    rm删除文件原理
    Linux是link的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_count和i_nlink
    •i_count的意义是当前文件使用者(或被调用)的数量
    当一个文件被某一个进程引用时,对应的这个值就会增加
    •i_nlink的意义是介质连接的数量(硬链接的数量)
    当创建文件的硬链接的时候,这个值就会增加

    rm操作只是将文件的i_nlink减少了,实际就是将文件名到inode的链接删除了,如果没有其它的链接,i_nlink就为0。但是由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以执行rm操作,系统并没有真正的删除这个文件,只有当i_nlink和i_count都为0的时候,这个文件才会被真正的删除。也就是说,必须要解除该进程对该文件的调用,才能真正的删除。

    解决方案

    lsof | grep deleted
    

    当发现删除文件后,磁盘的空间还是没有变,库使用使用以上命令,获得一个已经被删除但是仍然被应用程序占用的文件列表,然后可以kill 掉相关进程即可强制要求系统回收分配给正在使用的的文件,这样就可以释放次磁盘资源。

    注:系统中,只有已释放的文件数据块被重用其中数据被覆盖时,原文件数据才算删除掉。

    展开全文
  • 测试一下Linux下面删除大量文件的效率。 首先建立50万个文件 $ test for i in $(seq 1 500000);do echo text >>$i.txt;done 1. rm删除 $ time rm -f * zsh: sure you want to delete all the files in /home/...
  • 工作中遇到过linux系统某个进程“打开文件过多”的告警或者报错。这个问题临时解决好办:重启进程、重启节点、ulimit -n num命令 临时扩大限制都可以解决。根本解决当然是检查进程是否存在打开文件描述后未释放,...

    1.前言

    工作中遇到过linux系统某个进程“打开文件数过多”的告警或者报错。这个问题临时解决好办:重启进程、重启节点、ulimit -n num命令 临时扩大限制都可以解决。根本解决当然是检查进程是否存在打开文件描述后未释放,以及linux设置的资源限制是否合理才是关键。

    2.排查

    • 查看当前进程已经打开的文件描述符数量,以及检查打开的文件是否预期:
      ①lsof -p PID |wc -l
      或者②ls -l /proc/PID/fd/ | wc -l
      在这里插入图片描述
      如上排查可知,文件已经删除,但是文件描述为关闭,导致文件描述符泄露了。

    辅助命令扩展

    • 查看当前用户最大允许打开的文件数:
    [appdeploy@****411]$ulimit -n
    526488
    [appdeploy@****411]$ulimit -a | grep "open files"                                                      
    open files                      (-n) 526488
    
    • 查看当前进程最大允许打开的文件数:cat /proc/PID/limits
    • 查看当前系统最大允许打开的文件数:cat /proc/sys/fs/file-max
    • 查看当前系统各个用户创建的进程数:ps h -Led -o user | sort | uniq -c | sort -n

    3.调整设置

    1)临时设置用户允许打开的最大文件数:

    #soft limit,注意:注意soft limit必须小于hard limit
    ulimit -n 40960 (同ulimit -Sn 40960)
    #hard limit
    ulimit -Hn 50000
    

    2)永久设置用户允许打开的最大文件数:

    [appdeploy@**** 411]$cat>>/etc/security/limits.conf<<-EOF  
    #soft是软限制,超过只会告警;hard是硬限制,超过就报错。
    >#<domain>        <type>  <item>  <value>
    >#appdeploy用户的限制
    >appdeploy	hard    nofile 65535
    >appdeploy	soft    nofile 4096
    >#mwopr组的限制
    >#@mwopr	hard    nofile 65535
    >#@mwopr	soft    nofile 4096
    >EOF ```
    

    4.扩展:linux资源控制

    linux可以实现组、用户、进程级别的各种资源进行控制,如cgroup工具,ulimit命令等,但两者有一定的区别。

    • ulimit命令出现较早,主要可以实现如最大允许打开文件、CPU使用时间、CPU调度亲和性等的控制,(清单如下)。单ulimit控制也是比较有限的,比如ulimit就无法实现磁盘允许使用的控制,而cgroup就可以实现。
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 31154
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 524288
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 524288
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
    • cgroups(即control groups)是2007年从2.6.24引入linux内核主线,目前默认已启用该特性。 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控制。
    展开全文
  • Linux下一次删除百万文件 线上环境遇到的一个问题,文件数量过多,执行rm命令报错 # rm -f ./* -bash: /bin/rm: Argument list too long 根据报错检查状态 # ls | wc -l 634084 # du -sh 64G ...

    Linux下一次删除百万文件

    线上环境遇到的一个问题,文件数量过多,执行rm命令报错

    # rm -f ./*

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

    根据报错检查状态

    # ls | wc -l

    634084

    # du -sh

    64G

    在线下环境进行故障复现

    测试环境准备

    # df -Th

    Filesystem     Type   Size  Used Avail Use% Mounted on

    /dev/sda3      ext4   1.8T  331G  1.4T  20% /

    tmpfs          tmpfs  7.7G     0  7.7G   0% /dev/shm

    /dev/sda1      ext4   190M   61M  120M  34% /boot

    # grep name /proc/cpuinfo

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    model name      : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz

    # free -m

                 total       used       free     shared    buffers     cached

    Mem:         15709       1643      14066          8        452        559

    -/+ buffers/cache:        631      15078

    Swap:         8191          0       8191

    # cat /etc/redhat-release

    CentOS release 6.8 (Final)

    # uname -r

    2.6.32-642.1.1.el6.x86_64

    测试生成测试数据

    # for i in `seq 1000000`;do echo "${i}" >> ${i}.txt;done

    # ls | wc -l

    1000000

    # du -sh

    3.9G .

    # ls *.txt

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

    # rm -f ./*

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

     

     

    方法1:使用for循环方式执行删除任务

    # time for i in `ls ./`;do rm -f ${i};done

     

    real   58m44.234s

    user  8m59.930s

    sys    37m16.453s

    时间太长了,绝壁不能忍

     

     

    方法2:直接删目录

    # time rm -rf test && mkdir test

     

    real   0m56.768s

    user  0m1.453s

    sys    0m22.603s

    # du -sh test

    4.0K  test

    速度不错,然而很多情况下不能直接删目录,有点蛋疼

     

     

    方法3:使用 find + xargs 组合命令执行删除任务(网上流传最多的方法)

    # time find ./ -type f | xargs -n 1 rm -f

     

    real   18m30.267s

    user  0m9.536s

    sys    1m38.999s

     

    # time find ./ -type f | xargs rm -f

     

    real   16m16.774s

    user  0m2.232s

    sys    0m30.454s

    一样蛋疼,如果需求是删除全部文件的话,用这种方法就太low了,适合删除部分数据的场景

     

     

    方法4:使用 ls + xargs 组合命令执行删除任务

    # time ls | xargs -L 100 rm -f

     

    real   1m3.801s

    user  0m7.054s

    sys    0m28.582s

     

    # time ls | xargs -L 1000 rm -f

     

    real   0m55.917s

    user  0m5.322s

    sys    0m24.778s

     

    # time ls | xargs -L 2000 rm -f

     

    real   0m55.560s

    user  0m5.209s

    sys    0m24.702s

     

    # time ls | xargs -L 5000 rm -f

     

    real   0m55.057s

    user  0m5.196s

    sys    0m24.666s

     

    # time ls | xargs -L 10000 rm -f

     

    real   0m55.733s

    user  0m5.121s

    sys    0m24.657s

     

    # time ls | xargs -L 100000 rm -f

    xargs: argument list too long

     

    real   0m4.018s

    user  0m3.324s

    sys    0m0.701s

    速度杠杠滴~~但是注意文件名长度,选择合适的传参数量

     

     

    方法5:使用rsync命令来执行删除任务

    # mkdir /tmp/Null

    # time rsync --delete-before -d /tmp/Null/ ./

     

    real   0m56.386s

    user  0m1.767s

    sys    0m28.075s

    # ll

    total 0

    # du -sh ./

    29M ./

     没什么优点,缺点是rsync命令比较冷门,参数不容易记住,用的机会也不多,作为拓展方法了解一下就好

     

    如果你有其他好的方法,可以一起探讨一下~~

     

     

    原创文章,侵权必究

     

    转载于:https://www.cnblogs.com/blking/p/8073167.html

    展开全文
  • Linux系统操作中,如果文件中的数据过多,想要删除重复数据行是非常麻烦的,查找不方便,那么有什么方法能够快速删除文件重复数据行呢?下面小编就给大家介绍下如何删除文件重复数据行,一起来看看吧。...
  • 推荐文章Linux 最常用命令整理,建议收藏!linux ss 命令用法说明如何配置Linux系统的IP地址?Linux TCP状态TIME_WAIT 过多的处理 rm是我们在Lin...
  • 再用”du -sh *“命令查看那个文件夹文件过多。 再用”find . -ctime +6 | xargs rm -rf“命令删除创建日期在6天前的文件 (此命令有风险,请小心使用,建议将“.”替换成绝对路径使用) 删除之前先确认是否为冗余...
  • 首先建立50万个文件 代码如下:test for i in $(seq 1 500000)for> dofor> echo test >>$i.txtfor> done 1 rm 代码如下:test time rm -f *zsh: sure you want ...由于文件数量过多,rm不起作用。 2 find 代码如下: 
  • Linux rm 删除不满足条件的文件

    千次阅读 2018-09-03 13:21:59
    应用: 服务器中Log 文件过多,需要过滤删除一些不需要的Log文件,输出2018年以前的Log(Log文件以日期命名) $ ls -al 总用量 28 drwxrwxr-x 7 www-data www-data 4096 9月 3 13:20 . drwxr-xr-x 6 ...
  • Shell-linux批量删除文件

    千次阅读 2013-04-12 22:21:22
    touch 1.log touch 2.log find /tmp/*.log -ctime +10 -exec rm -rf {} \; # 文件数量过多可以考虑以下命令执行 touch 1.log touch 2.log find /tmp/*.log |xargs rm
  • 当需要删除的文件数量非常多的时候,rm不能正常执行,提示...例如,下面的命令:rm `find /path -type f`如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。find /...
  • 文件数量过多,find命令也会出现问题: -bash: /bin/find: Argument list too long 方法二:xargs控制每组输出个数 ls | xargs -n 50 rm -rf xargs控制50个为一组,一次删除一组即可 转载于:...
  • linux之杂项理解文件系统上的复制,移动,删除文件系统上文件由元数据(metadata)和数据(data)组成- inode中保存文件元数据信息:文件类型,权限,UID,GID,链接数,大小,时间戳,block号等属性信息- block中保存文件的内容...
  • 删除文件中包含的小文件数量过多,通常是由于受到 shell 参数个数限制所致。 这个是Linux系统存在的限制,可以通过如下指令查看该参数值的配置: getconfARG_MAX 解决办法 注: ...
  • Linux 系统中当单个目录中文件过多时,试图用 rm * 来删除所有文件会报错 /bin/rm: Argument list too long.    据说这是因为 Linux 内核中所有 exec 系函数(execl, execlp, execle 等)最终调用的都是 ...
  • Linux 系统中当单个目录中文件过多时,试图用 rm * 来删除所有文件会报错 /bin/rm: Argument list too long. 据说这是因为 Linux 内核中所有 exec 系函数(execl, execlp, execle 等)最终调用的都是 execve() ...
  • linux中项目日志文件导致磁盘满了

    千次阅读 2018-06-25 10:27:23
    Linux中项目文件过多导致系统磁盘满了 以至于新的日志文件不能被写入先查看系统磁盘占用情况df -hz然后在日志文件列表目录查看文件占用情况ls -lht然后删除某些日志文件即可...
  • 假设我们要删除文件夹test,test下有...报错提示原因:文件夹下的文件数目过多,命令行过长所致。解决方法:我们可以结合xargs命令来删除,ls | xargs -n 9 rm -rf ,ls列出当前目录下的所有文件,以空格作为分隔, ...
  • Linux操作系统下使用vim命令修改文件 vi有两个模式:一个是编辑一个是命令。我们从命令进入编辑为:i,o,a。一般使用的是i:因为这个我是最熟悉的。退出点击esc键,就进入命令模式。 我们需要删除文件的当前行和后...
  • 在进行!... 操作时出现以下报错!... 之后参考网上对于符号连接层数过多的解决办法用ln命令进行了链接 ![图片说明]...想询问一下各位大佬有没有方法可以将这个文件删除重新进行ln操作呢
  • Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long" 如图: 通过ls /var/spool/postfix/maildrop/*|wc -l 发现文件数达到21万多,见附件: 原因:...
  • 如何在linux下编辑和修改文件

    万次阅读 2017-05-02 17:50:28
    我们需要删除文件的当前行和后一行,命令为:2dd,一般我们使用的是单个字符的删除为:x。我们一般进入编辑模式,来进行添加,修改,删除。 但是当我们删除和修改的内容过多的时候,我们使用命令行模式,进行修改...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

linux文件过多删除

linux 订阅