script para remover todos os arquivos em / tmp de um determinado usuário

1

Um dos meus daemons de servidor usa muito espaço em / tmp. Como não quero reiniciar minha máquina quando o servidor ficar sem espaço em disco, preciso executar um script CRON que remova arquivos temporários antigos.

Qual seria uma boa maneira de remover recursivamente todos os arquivos e diretórios em / tmp com mais de 1 hora do usuário, digamos www-data ? É claro que não deve resolver links simbólicos e começar a remover arquivos em outro lugar do sistema. Estou usando o Ubuntu 12.04 e executarei este cronjob como root.

    
por Jeroen 24.04.2012 / 20:14

2 respostas

5

Solte um script como este em /etc/cron.hourly:

find /tmp -mmin +60 -user www-data -delete

Você pode querer primeiro executar manualmente a find sem a opção -delete para verificar seu trabalho.

Hmm, também, para eliminar os subdiretórios (já que -delete apenas remove arquivos), adicione outra linha:

find /tmp -mmin +60 -user www-data -type d -empty -exec rmdir {} \;

Dependendo da profundidade do subdiretório, o segundo find pode demorar um pouco para voltar, já que o mtime para o diretório pai será atualizado conforme o subdiretório for removido.

    
por 24.04.2012 / 20:20
0

Você também pode verificar com o comando lsof se o arquivo temporário está aberto antes de excluí-lo.

    
por 24.04.2012 / 20:50