У меня есть 8 миллионов файлов в моем/tmp, и мне нужно их удалить. На этом сервере также работает довольно важное приложение, и я не могу его перегрузить.Удалить огромное количество файлов
Я использую небольшой 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 $ хороший -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, и у меня достаточно памяти.
Ребята, как удалить эти файлы?
Не можете ли вы сделать это в командной строке? Нужно ли их удалять только один раз или через определенные промежутки времени? Возможно создание cronjob, который удаляет фиксированное количество файлов через регулярные промежутки времени. – pritaeas