Autor Tópico: Como executar um script no cron?  (Lida 6537 vezes)

Offline ubu4ever

  • Usuário Ubuntu
  • *
  • Mensagens: 695
    • Ver perfil
Como executar um script no cron?
« Online: 10 de Junho de 2013, 21:44 »
Pessoal,

Tentei adicionar dois scripts no cron para serem executados diariamente e mensalmente, respectivamente, mas o cron exibe o erro:

Citar
Jun 10 16:48:01 NETUBU CRON[20777]: (root) CMD (sudo bash /home/user/BackupArquivos.sh)
Jun 10 16:48:01 NETUBU CRON[20776]: (CRON) info (No MTA installed, discarding output)

Scripts no cron
Código: [Selecionar]
sudo crontab -e
...
0 12 * * * sudo bash /home/user/BackupArquivos.sh
30 12 1 * * sudo bash /home/user/BackupSistema.sh

Fora do cron os 2 scripts rodam sem retornar nenhum erro.

Offline ubu4ever

  • Usuário Ubuntu
  • *
  • Mensagens: 695
    • Ver perfil
Re: Como executar um script no cron?
« Resposta #1 Online: 11 de Junho de 2013, 00:27 »
Encontrei uma solução. Não é a "politicamente correta" mas serviu. O correto seria criar os trabalhos via sudo crontab -e e adicionar o conteúdo ao arquivo.

Editei o arquivo /etc/crontab

Código: [Selecionar]
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
0 12    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
15 12   * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
30 12   1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )


# COMANDOS PERSONALIZADOS
0 12    * * *   root    (cd /home/user/ && ./BackupArquivos.sh >>Script.log 2>&1)
30 12   1 * *   root    (cd /home/user/ && ./BackupSistema.sh >>Script.log 2>&1)

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Como executar um script no cron?
« Resposta #2 Online: 11 de Junho de 2013, 00:32 »
Oi, vc entendeu pq não funcionou da primeira vez, não? O comando "sudo" não pode ser executado fora do terminal...

A solução que vc adotou realmente não é a melhor, mas está bem longe de ser a pior.
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 ubu4ever

  • Usuário Ubuntu
  • *
  • Mensagens: 695
    • Ver perfil
Re: Como executar um script no cron?
« Resposta #3 Online: 11 de Junho de 2013, 09:57 »
Oi, vc entendeu pq não funcionou da primeira vez, não? O comando "sudo" não pode ser executado fora do terminal...

A solução que vc adotou realmente não é a melhor, mas está bem longe de ser a pior.

Vi tutoriais onde foi ensinado usar o comando sudo, porém para executador comandos dentro do crontab e não scripts, como no meu caso.

Além disso é necessário adicionar o SHELL e o PATH no arquivo para executar scripts no crontab. No arquivo /etc/crontab já existem essas linhas!

sudo crontab -e
Citar
...
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


# m h  dom mon dow   command
0 10 * * * (cd /home/user/ && ./BackupArquivos.sh >>Cron.log 2>&1)
30 10 1 * * (cd /home/user/ && ./BackupSistema.sh >>Cron.log 2>&1)

Agora sim o crontab está funcionando.