Yanıtlar:
tmpwatch
Bu şeyler için kullanmayı severim , bu dosyanın son değiştirildiği zamandır. Çok basit ve birçok durumda iyi çalışıyor:
tmpwatch -m 720 /path/to/cache
Ubuntu için tmpreaper
bunun yerine kontrol edin .
Dosyaya en son ne zaman erişildiğini kontrol etmek istiyorsanız, aşağıdakileri kullanın:
tmpwatch -a 720 /path/to/cache
Nompime ile monte edilmiş dosya sistemlerinde tmpwatch -a komutunu kullanamazsınız. -m hala kullanabilirsiniz
Ubuntu 10.04.2 LTS
ve bu komut mevcut değil ..
tmpreaper
Bunun yerine denetleyin .
Yukarıdakileri nice ile çalıştırmayı deneyin:
nice -n 39 find cache* -mtime +30 -exec rm -f {} ';'
Bu şekilde, devasa yük yalnızca başka hiçbir şeyin çalışması gerekmiyorsa ortaya çıkar, aksi takdirde diğer işlemler öncelik kazanır (eğer hassaslıkları 19'dan az, yani maksimum).
-N seçeneğine argüman olacak böylece 39 kullanılan -20 ila 19. değişir varsayılan hoşluk eklenir unutmayın çok olursa olsun orada orijinal Ne incelik güzel.
Chiborg tarafından yorumlandığı gibi, yük bulunan her dosya için rm'nin başlatılmasından kaynaklanmaktadır. tmpwatch
Alternatif olarak önerilen yerin cevabını fark ettim, eminim ki iyi sonuç verir. Ancak, gerekli değildir.
Bulunan dosyaları, aşağıdaki gibi argümanlar listesine eklemesini söylerseniz, bir kez yürütmek için verilen komutu çalıştırabilir:
find /path -name "*.moo" -exec rm {} \+
Bu bazen işe yaramayabilir, çünkü argüman listesi kabuk tarafından izin verilen maksimum değerden (bayt cinsinden) büyüyebilir (getconf ARG_MAX). Bu, -L seçeneğiyle xargs ile çözülebilir.
bu örneği düşünün:
$ echo 0 > /tmp/it;
$ for i in {0..15000};do echo $i;done |\
xargs --no-run-if-empty -L 5000 ./tmp/xr.sh
Iteration=0; running with 5000 arguments
Iteration=1; running with 5000 arguments
Iteration=2; running with 5000 arguments
Iteration=3; running with 1 arguments
$ cat tmp/xr.sh
#!/bin/sh
IT=`cat /tmp/it`
echo Iteration=$IT\; running with $# arguments
let IT=IT+1
echo $IT > /tmp/it
Bu yüzden fazladan bir yazılım kurmanıza gerek yok, ihtiyacınız olan tek şey gnu-findutils:
find /path -mtime +30 -print0 | xargs -0 -L 5000 rm
\+
; ova +
yeterince iyi. (2) Bu “işe yaramaz, çünkü tartışma listesi genişleyebilir…”. find … -exec … {} +
yapacak aynı şeyi xargs
yapacak; komutu gerektiği kadar çalıştıracaktır. Eğer 15001 ila 20000 dosya varsa, örneğin (sizin örnekte olduğu gibi), find
aday olacağını -exec
'd programını ( rm
) dört kez.
cache*
çok sayıda dosya için genişler, gibi bir şey denemek isteyebilirsinizfind . -name 'cache*' -mtime +30 -exec rm {} \;
yerine.