我的 /tmp 中有 800 万个文件,我需要删除它们。该服务器也在运行非常重要的应用程序,我不能超载它。
我正在使用小型 php 脚本:
<?php
$dir = "/tmp";
$dh = opendir( $dir);
$i = 0;
while (($file = readdir($dh)) !== false) {
$file = "$dir/$file";
if (is_file( $file) && (preg_match("/open/", $file))) {
unlink( $file);
#echo $file;
if (!(++$i % 10000)) {
echo "$i files removed\n";
}
}
}
?>
但这使我的应用程序无法访问,即使使用: $ ionice -c 3 php ./tmp_files_killer.php $ nice -n 20 php ./tmp_files_killer.php
我已经更改了我的脚本,所以它不会一直读取 /tmp 目录:
$ ls -1 /tmp > tmp_files_list.txt
<?php
$file = "tmp_files_list.txt";
$infile = fopen($file, "r");
while ( !feof( $infile ) ) {
$line = rtrim( fgets( $infile ), "\n\r" );
if ($line != null){
$file = "$dir/$line";
unlink( $file);
if (!(++$i % 10000)) {
echo "$i files removed\n";
}
# echo $line + "\n";
}
}
?>
但运行这个脚本也会减慢我的应用程序。进程不加载 CPU,我有足够的内存。
各位大佬,怎么删除这些文件?