Como executar um script no cron?

Iniciado por ubu4ever, 10 de Junho de 2013, 21:44

tópico anterior - próximo tópico

ubu4ever

Pessoal,

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

CitarJun 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
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.

ubu4ever

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

# /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)

zekkerj

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

ubu4ever

Citação de: zekkerj 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.

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.