Excluindo muitos arquivos

6

Eu acidentalmente criei 8 milhões de arquivos e toda vez que eu estou tentando apagá-los, o servidor quase morre por causa do processo rm comendo todo o disco IO (o servidor é remoto sem console).

Algum trabalho como este, ou seja, invocar a ionização?

sudo find /var/lib/php5/ -type f -exec ionice -c3 rm -f {} \;
    
por jonasl 01.11.2010 / 11:58

3 respostas

7

Eu faria assim ...

sudo ionice -c3 find /var/lib/php5/ -type f -exec  rm -f '{}' +

o + é mais xargs como (eu acho) e, portanto, mais eficiente em um grande número de arquivos. Colocar ionice em todo o comando deve fazer com que cada subcomando também seja ionizado, assim como a busca em si. Você já tentou isso?

você também pode torná-lo muito legal nice -n 19 ionice -c 3 programname , embora não seja necessário .

ou seguindo o exemplo @alex você pode

ionice -c3 find /var/lib/php5/ -type f -delete
    
por 01.11.2010 / 13:00
1

Eu faria algo assim:

import os
os.nice(19)
dir = "/var/lib/php5/"
bad_files = [os.join(dir, file) for file in os.listdir(dir)
                     if is_bad(os.join(dir, file))]
for junk in bad_files:
  os.unlink(junk)
  time.sleep(0.1)
    
por 01.11.2010 / 12:20
0

Talvez seja muito bobo.

E sobre a exclusão de toda a estrutura de diretório?

find /var/lib/php5 -type d -print > /tmp/directories
rm -r /var/lib/php5
cat /tmp/directories | xargs mkdir
    
por 02.11.2010 / 07:00