मेरे पास मेरे/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 ./ 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";
}
}
?>
लेकिन इस स्क्रिप्ट भी चल रहा है धीमा मेरा ऐप प्रक्रिया सीपीयू लोड नहीं करता है और मेरे पास पर्याप्त स्मृति है।
दोस्तों, इन फ़ाइलों को कैसे हटाएं?
क्या आप इसे कमांड लाइन पर नहीं कर सकते? क्या आपको उन्हें केवल एक बार, या नियमित अंतराल में हटाना है? शायद एक cronjob बनाने जो नियमित अंतराल पर एक निश्चित मात्रा में फाइलों को हटा देता है। – pritaeas