Autor Tópico: Crontab não funciona  (Lida 6027 vezes)

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Crontab não funciona
« Online: 18 de Janeiro de 2011, 15:09 »
Caros,

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

Código: [Selecionar]
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:

Código: [Selecionar]
# 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.



« Última modificação: 24 de Janeiro de 2011, 14:54 por agente100gelo »
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Crontab não funciona
« Resposta #1 Online: 18 de Janeiro de 2011, 16:43 »
Adicione o caminho completo ao nome do arquivo. P.ex.:

Código: [Selecionar]
# 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

Offline clcampos

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 10.790
  • .:: User Linux #439596 ::.
    • Ver perfil
Re: Crontab não funciona
« Resposta #2 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.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: Crontab não funciona
« Resposta #3 Online: 19 de Janeiro de 2011, 10:57 »
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

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Crontab não funciona
« Resposta #4 Online: 19 de Janeiro de 2011, 11:13 »
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.

Citar
Já 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

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Crontab não funciona
« Resposta #5 Online: 19 de Janeiro de 2011, 11:37 »
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).

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: Crontab não funciona
« Resposta #6 Online: 24 de Janeiro de 2011, 14:58 »
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