Não se preocupe em executar rm
, o find pode lidar com isso:
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -delete
Estou executando o Magento e ele não limpa os dados antigos da sessão, por isso preciso limpá-lo com um script de shell / cronjob:
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -exec rm {} \;
Mas esse script demora alguns minutos para excluir os arquivos antigos. Eu estou querendo saber se eu preciso procurar os arquivos desde neste diretório são apenas arquivos que começam com "sess_" - mas eu ainda preciso percorrer esses arquivos de alguma forma, certo?
(cerca de 50.000 arquivos por dia são criados neste diretório)
Se a única coisa nesse diretório for sess_*
arquivos, você pode deixar de fora o -name 'sess_*'
, e find
irá percorrer de qualquer maneira. Teste o que combinaria removendo a parte -exec
.
$ /usr/bin/find /var/www/magento/var/session -type f -mtime +1
Em seguida, para o trabalho cron,
0,30 * * * * /usr/bin/find /var/www/magento/var/session -type f -mtime +1 -exec rm {} \;
Tendo dito isso, eu não tenho certeza de que este é o lugar onde o gargalo é, então talvez o comentários seriam mais úteis.
Além disso, você provavelmente deve usar -execdir
em vez de -exec
por motivos de segurança; veja man find
.
Eu usaria perl, é mais rápido e mais eficiente para isso que find + rm
0,30 * * * * cd /var/www/magento/var/session && /usr/bin/perl -e 'for(<sess_*>){((stat)[9]<(unlink))}'
Excluir meu diretório de registro com mais de 500.000 registros diários apaga em menos de 6 minutos.
Tags performance find rm