Configurando um novo job usando o crontab do ubuntu [duplicado]

1

Tenho pouca experiência com a configuração de tarefas cronicas.

Eu preciso configurar uma tarefa cron para excluir todos os arquivos que começam com o nome de arquivo 'sess_' da pasta '/tmp' a cada hora.

Se eu iniciar o crontab usando crontab -e e escrever o seguinte código:

0 */1 * * * find /tmp/ -name "sess_*" -delete

isso funcionará?

A sintaxe parece correta? Preciso reiniciar alguma coisa? (por exemplo, Apache)

Obrigado antecipadamente!

    
por Bob Flemming 11.06.2013 / 17:18

1 resposta

2

O */1 é o mesmo que * na definição do cron, então

0 * * * *  ...

funcionaria da mesma maneira.

Em encontrar, o -delete excluirá os arquivos conforme solicitado, mas pode não ser o que você deseja. Você pode testar seu comando find executando-o a partir da linha de comando sem a opção -delete

find /tmp/ -name "Sess_*"   

, que lhe dará a lista de arquivos que seriam executados.

Melhor ainda é olhar o arquivo /etc/cron.d/php5 que faz a mesma coisa para arquivos de sessão localizados em / var / lib / php5. Observe que ele exclui apenas arquivos que são mais antigos que o maxlifetime do sistema usando a opção -cmin ...

# /etc/cron.d/php5: crontab fragment for php5
#  This purges session files older than X, where X is defined in seconds
#  as the largest value of session.gc_maxlifetime from all your php.ini
#  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Ao fazer isso desta maneira, você não excluirá cegamente os arquivos de sessão que estiverem em uso.

    
por 11.06.2013 / 17:56