私は/ 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 $素敵-n 20 PHP ./
$ 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";
}
}
?>
が、このスクリプトを実行しているにも遅くなる:それは読み取り/ないように
tmp_files_killer.php私はすべての時間がtmpのディレクトリ私のスクリプトを変更しました私のアプリ。プロセスはCPUをロードせず、十分なメモリがあります。
みんな、これらのファイルを削除するには?
コマンドラインで実行できませんか?一度だけ、または定期的に削除する必要がありますか?おそらく定期的に一定量のファイルを削除するcronジョブを作成するでしょう。 – pritaeas