Milhões de arquivos no erro tmp do php - como excluir? [fechadas]

2

Eu tenho uma pasta tmp com 14 milhões de arquivos de sessão php no meu diretório pessoal. Pelo menos é o que eu acho que é, não é como se eu pudesse ls ou qualquer coisa.

Eu tentei usar find com os comandos -exec rm {} \; , mas isso não funcionou. ls 'sess_0*' | xargs rm não fez nenhum.

No momento, estou exibindo rm -rf tmp , mas depois de duas horas, a pasta parece ter o mesmo tamanho.

Como posso esvaziar esta pasta?

Alguém tem uma pista do que causou isso no começo? Não me lembro de ter mudado nada de importante ultimamente.

INFORMAÇÃO DE REFERÊNCIA:

De repente, encontrei um erro em que as SESSIONS não podiam mais ser gravadas no disco:

[Mon Apr 19 19:58:32 2010] [warn] mod_fcgid: stderr: PHP Warning: Unknown: open(/var/www/clients/client1/web1/tmp/sess_8e12742b62aa68a3f9476ec80222bbfb, O_RDWR) failed: No space left on device (28) in Unknown on line 0

[Mon Apr 19 19:58:32 2010] [warn] mod_fcgid: stderr: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/clients/client1/web1/tmp) in Unknown on line 0

eu corri:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0              457G  126G  308G  29% /
tmpfs                 1.8G     0  1.8G   0% /lib/init/rw
udev                   10M  664K  9.4M   7% /dev
tmpfs                 1.8G     0  1.8G   0% /dev/shm

Mas, como você pode ver, o disco não está cheio.

Então eu dei uma olhada no syslog que diz as seguintes 20 vezes por segundo:

kernel: [19570794.361241] EXT3-fs warning (device md0): ext3_dx_add_entry: Directory index full!

Isso me levou a pensar em uma pasta completa, obviamente, mas como a minha pasta web tem apenas 60k (tendo contado), achei que era a pasta tmp (a local, para essa instância do php ) que estragou as coisas.

Alguns comandos que eu executei:

$ sudo ls sess_a* | xargs rm -f bash: /usr/bin/sudo: Argument list too long

find . -exec rm {} \; rm: cannot remove directory '.' find: cannot fork: Cannot allocate memory

Estou executando o Debian Lenny, php5, ISPConfig, SuEXEC e Fast-CGI.

    
por Jonatan Littke 19.04.2010 / 20:12

3 respostas

1

find /tmp -name "sess_*" -exec rm {} \;

    
por 19.04.2010 / 20:14
1

Primeiro de tudo, os erros sobre não conseguir gravar em

/var/www/clients/client1/web1/tmp/

não significa que é este diretório que tem todos os arquivos, apenas que está lá tentando gravar quando registra o erro. Mas você localizou os arquivos e está prestes a removê-los.

  • pare o servidor da web (se possível) para impedir a criação de mais e pare de vomitar mensagens de erro
  • limpar
  • reiniciar servidor da web
  • observe se ele começa novamente

Para a etapa de limpeza, supondo que os arquivos a serem limpos estejam em /var/www/clients/client1/web1/tmp , primeiro se torne o mesmo usuário efetivo daquele que cria os arquivos de sessão (provavelmente um de apache ou httpd ou www-data ). :

  • cd /var/www/clients/client1/web1/tmp
  • ls -f | grep ^sess_ | xargs rm -f
por 03.08.2012 / 14:15
0

Estou usando esse método para excluir 2,3 milhões - parece que será concluído em cerca de 10 a 15 minutos

link

    
por 03.08.2012 / 14:02