Eu uso o Crontab no meu usuário para executar muitos scripts curl, eles funcionam bem, 40 deles funcionam.
Mas os scripts que tenho na raiz do Crontab, usando o comando 'sudo crontab -e', não estão rodando, pararam de funcionar há cerca de 1 mês e funcionaram bem por mais de 2 anos.
Tentei falar com o pessoal do servidor e nenhum deles tem ideia do que poderia estar errado. Aliás, não sou especialista em servidores, posso seguir um guia, mas é isso :)
Já tentei: reiniciar o serviço cron, "instalar novo crontab", rodar os scripts no crontab normal usando o usuário root, reiniciar o servidor, deletar tudo do arquivo, deletar MAILTO.
Todos os scripts funcionam apenas executando-os manualmente.
esta é a multa que não está funcionando:
MAILTO=""
2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"
Responder1
O mais útil deve ser receber mensagens de erros.
2 3 * * * { date; bash -v "/usr/local/scripts/backup-mysql.sh"; date; } &>/tmp/cron-backup-mysql.log
25 3 * * * { date; bash -v "/usr/local/scripts/backup-prestashop.sh"; date; } &>/tmp/cron-backup-prestashop.log
A saída é registrada em /tmp/cron-backup-mysql.log
e /tmp/cron-backup-prestashop.log
. bash -v
gera linhas do script à medida que são lidas.
Você pode verificar o proprietário do arquivo para ter certeza de que ele é executado como root. Em seguida, leia o arquivo, você tem o horário de início e término para verificar se a execução foi concluída e se a duração é a esperada.
Se o script agora for executado corretamente, o problema provavelmente foi o shell invocado implicitamente (remover bash -v
do crontab e adicionar echo SHELL = $SHELL
ao script) ou a permissão de execução ausente no script ( chmod +x
).
Se o script travar, bash -v
irá ajudá-lo a encontrar o bug. Você pode mostrar mais detalhes substituindo -v
por -x
, mas isso inundará a saída com cada expressão à medida que são avaliadas.