AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 448870
Accepted
Byakugan
Byakugan
Asked: 2012-11-15 19:18:15 +0800 CST2012-11-15 19:18:15 +0800 CST 2012-11-15 19:18:15 +0800 CST

如何比 rm -rf 更快地删除文件?[复制]

  • 772
这个问题在这里已经有了答案:
9 年前关闭。

可能重复:
php 的 tmp 错误中的数百万个文件 - 如何删除?

有什么方法可以比使用命令 rm -rf 更快地删除文件夹/文件?

似乎我的光盘充满了数十亿个文件(php5 的会话),这些文件没有在 cron 中删除,所以我需要手动删除它们,但这需要几个小时,但仍然无助于减少数量。谢谢你。

我的命令:rm -rf /var/lib/php5/*

还尝试了这些命令:

find /var/lib/php5 -name "sess_*" -exec rm {} \;

和

perl -e 'chdir "/var/lib/php5/" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'
linux
  • 2 2 个回答
  • 2629 Views

2 个回答

  • Voted
  1. David Schwartz
    2012-11-15T20:04:16+08:002012-11-15T20:04:16+08:00

    最快的方法可能是:

    cd /var/lib/php5
    ls -f | xargs -d "\n" rm
    

    还:

    cd /var/lib/php5
    for i in {1..999}
    do
       find . -type f | head -1000 | xargs rm
    done
    

    而且,如果你喜欢perl:

    perl -e 'chdir "/var/lib/php5" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'
    
    • 3
  2. Best Answer
    John Siu
    2012-11-15T20:03:55+08:002012-11-15T20:03:55+08:00

    php5 应该带有一个默认的 cron 作业来删除会话文件。

    在 Debian/Ubuntu 中,它就像下面这样(直接从 Ubuntu 12.04 LTS 复制过来)

    /etc/cron.d/php5

    # /etc/cron.d/php5: crontab fragment for php5
    #  This purges session files older than X, where X is defined in seconds
    #  as the largest value of session.gc_maxlifetime from all your php.ini
    #  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime
    
    # Look for and purge old sessions every 30 minutes
    09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
    

    它每半小时运行一次,并根据 php.ini 中的 session.gc_maxlifetime 删除过期的会话。

    所以你应该做以下事情:

    1. 检查您是否有上述 cron 作业文件。缺了就补上。
    2. 检查/etc/php5/apache2/php.ini中session.gc_maxlifetime的值

      Ubuntu 上session.gc_maxlifetime的默认值为1440sec = 24min

      session.gc_maxlifetime = 1440
      
    3. 如果以上 2 看起来正常,请尝试在 cron 作业中手动运行命令行。这将在屏幕上打印所有错误。

    4. Grep 用于 /var/log/syslog 中的 cron 错误。看看他们是否与php相关。

    对于已经存在的数十亿会话文件,您现在必须手动删除它们。

    为了控制目前的情况

    service apache2 stop
    mv /var/lib/php5 /var/lib/php5.delete
    mkdir /var/lib/php5
    chmod 733 /var/lib/php5
    chmod o+t /var/lib/php5
    service apache2 start
    

    然后删除/var/lib/php5.delete。这可能需要几个小时。同时注意新建/var/lib/php5目录下的文件号。如果它以不正常的方式增加,那么除了删除文件之外,您确实遇到了问题。

    手动运行 cron 作业命令行

    只需在命令提示符中将root后面的部分,如下

    [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
    
    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve