Crontab não funciona

Iniciado por agente100gelo, 18 de Janeiro de 2011, 15:09

tópico anterior - próximo tópico

agente100gelo

Caros,

Fiz um arquivo para rodar no crontab mas o agendamento não funciona (o script tá ok).

NOW=$(date +"%y%b%d")
gbak -v -t -user SYSDBA -password "*********" ipucargas.fdb $NOW.fbk
gzip $NOW.fbk
mv $NOW.fbk.gz /home/ipucargas/Dropbox


Com o sudo crontab -e edito isto:

# m h  dom mon dow   command
55 23 * * * backup-firebird.sh >> /home/ipucargas/backup.log


Já tinha visto que o script do crontab não pode ter nenhuma saída, o que pensei ter solucionado. Mas nada.

Alguma dica? Já fucei no fórum e no Google e nada.



Advogado e analista de sistema cearense.
Twitter: @glaydson

zekkerj

Adicione o caminho completo ao nome do arquivo. P.ex.:

# m h  dom mon dow   command
55 23 * * * /home/agente100gelo/bin/backup-firebird.sh >> /home/ipucargas/backup.log


Dentro do script, vc também não pode confiar em nenhuma variável de ambiente, são todas apagadas ou resetadas pro seu valor default.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

clcampos

agente não me pergunte porque mas tenho tido exatamente o mesmo problema que você, mas não com todos os agendamentos que faço, e o pior é que em todos que estou tendo problemas tenho algum comando com data no meio, exatamente como no seu caso.

Já tentei caminho completo, já tentei muita coisa e ainda não achei o motivo. Pior que poderia ser uma besteira minha, mas infelizmente uso cron muito e só me acontece erros nesses casos.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

agente100gelo

Citação de: clcampos online 19 de Janeiro de 2011, 01:52
agente não me pergunte porque mas tenho tido exatamente o mesmo problema que você, mas não com todos os agendamentos que faço, e o pior é que em todos que estou tendo problemas tenho algum comando com data no meio, exatamente como no seu caso.

Já tentei caminho completo, já tentei muita coisa e ainda não achei o motivo. Pior que poderia ser uma besteira minha, mas infelizmente uso cron muito e só me acontece erros nesses casos.

A alteração para o caminho completo não funcionou.
Vou ver se tirar a data dá certo.

Em alguns exemplos eu vi que no arquivo do crontab precisa ter o endereço do interpretador. Confere?
Advogado e analista de sistema cearense.
Twitter: @glaydson

zekkerj

Confirmou que o serviço está ativo? O log do sistema tem que registrar, no mínimo, a ativação dos comandos.

Outra coisa que pode estar acontecendo: você colocou essa tarefa no crontab de um dos usuários. Tente colocar no crontab central, criando um arquivo em "/etc/cron.d" com o seu agendamento.  A sintaxe é um pouco diferente, vc tem que indicar o usuário que vai executar o comando.

Outra possibilidade é você colocar o script no diretório "/etc/cron.daily", mas nesse caso vc perde o controle da hora em que a tarefa será executada.

CitarJá tinha visto que o script do crontab não pode ter nenhuma saída, o que pensei ter solucionado. Mas nada.
Na documentação normal, o script pode ter saída. Só que todas as saídas (inclusive a de erro) são enviadas por email para o usuário. Vale uma olhada no mailbox de seu usuário.

O que me faz lembrar... seu comando está incompleto. Como eu disse, todas as saídas (inclusive a de erro) vão pro email do usuário. No seu comando, vc só direciona a saída padrão pro log. Vc precisa direcionar também a saída de erro. O comando, modificado pra isso, fica assim:

55 23 * * * /home/agente100gelo/bin/backup-firebird.sh >> /home/ipucargas/backup.log 2>&1
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

irtigor

Existem algumas obervações na documentação comunitária, verifique https://help.ubuntu.com/community/CronHowto#Troubleshooting%20and%20Common%20Problems

Basicamente: problemas com arquivos com extensão (ex script.sh) e a falta de uma nova linha no final do arquivo (necessária, se não existir a tarefa é ignorada).

agente100gelo

Resolvido.

Não sei bem o que fez funcionar mas vai algumas advertências:


  • O script chamado não pode ter saída de texto. Se tiver deve-se direcionar a saída para um arquivo de log.
  • O script não deve ter extensão.
  • Deve ter uma linha em branco no final de um script chamado.
  • Necessário chamar o interpretador no início do script (ex: #!/bin/bash).
  • Necessário iniciar o serviço (sudo service crontab start). Parece óbvio mas perdi algumas horas antes de encontrar os outros erros.
Advogado e analista de sistema cearense.
Twitter: @glaydson