如何删除文件比rm -rf快?

可能重复:
数百万的文件在php的tmp错误 – 如何删除

有没有办法如何删除文件夹/文件比使用命令rm -rf?

看来我的光盘里充斥着cron中没有删除的文件(php5的会话)的两百个文件,所以我需要手动删除它们,但它需要几个小时,它仍然没有帮助减less金额。 谢谢。

我的命令: 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 }' 

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作业文件。 如果缺less添加它。
  2. 检查/etc/php5/apache2/php.inisession.gc_maxlifetime的

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

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

  4. grep for / 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目录中的文件编号。 如果以exception方式增长,则除了删除文件外,您还有其他问题。

手动运行cron作业命令行

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

 [ -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 

最快的方法可能是:

 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 }'