Удалить огромное количество файлов

У меня в /tmp 8 миллионов файлов, и мне нужно их удалить. На этом сервере также работает довольно важное приложение, и я не могу его перегрузить.

Я использую небольшой 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";
  } 
} 
?>

но выполнение этого скрипта также замедляет работу моего приложения. Процесс не загружает ЦП, а у меня достаточно памяти.

Ребят, как удалить эти файлы?

5
задан user1306920 4 April 2012 в 09:54
поделиться