Fórum Ubuntu Linux - PT

Suporte Técnico => Sistema => Tópico iniciado por: ubu4ever em 10 de Junho de 2013, 21:44

Título: Como executar um script no cron?
Enviado por: ubu4ever em 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.
Título: Re: Como executar um script no cron?
Enviado por: ubu4ever em 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)
Título: Re: Como executar um script no cron?
Enviado por: zekkerj em 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.
Título: Re: Como executar um script no cron?
Enviado por: ubu4ever em 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.