可能重复:
数百万的文件在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上的过期会话库。
所以你应该这样做:
检查/etc/php5/apache2/php.ini中session.gc_maxlifetime的值
Ubuntu上session.gc_maxlifetime的默认值是1440sec = 24min
session.gc_maxlifetime = 1440
如果上述2看起来正常,请尝试手动在cron作业中运行命令行。 这将在屏幕上打印所有错误。
关于数十亿会话文件已经存在,你必须现在手动删除它们。
把目前的情况控制住
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 }'