Fórum Ubuntu Linux - PT

Suporte Técnico => Sistema => Tópico iniciado por: pentestbox em 14 de Novembro de 2016, 15:22

Título: Crontab não executa Script
Enviado por: pentestbox em 14 de Novembro de 2016, 15:22
Ola pessoal, estou tentando agendar via crontab para executar um Script de 5 em 5 minutos no sistema, so que o crontab não executa o script, gostaria da ajuda de vcs para resolver o problema, o que fiz foi assim:

$ sudo crontab -e

No arquivo do contrab coloquei

5 * * * * /home/lab/bkp.sh

Fiz dessa maneira e nada acontece, gostaria de saber como fazer o crontab executar  o script, que por sinal é um script simples que faz uma cópia de uns arquivos de um lugar para o outro no mesmo sistema, quando rodo o script separado ele funciona perfeitamente, o problema esta sendo no crontab.
conto com a ajuda de vcs.
Desde já Obrigado.
Título: Re:Crontab não executa Script
Enviado por: zekkerj em 15 de Novembro de 2016, 10:31
Executar aplicações no cron é um pouco traiçoeiro. Você precisa estar atento pra algumas coisas:
1. Não há gráficos disponíveis.
2. Não há teclado disponível (você não pode fazer entrada de nada, nem de senhas, caso use "su" ou "sudo").
3. O ambiente de execução é reduzidíssimo, então várias vezes você tenta chamar um outro aplicativo e ele simplesmente não está no "path".

Aposto que o que te derrubou foi a armadilha #3. Verifique teu script, se vc não está chamando algum aplicativo que não esteja em /bin:/usr/bin.
Título: Re:Crontab não executa Script
Enviado por: selvaking em 15 de Novembro de 2016, 11:26
Crie o diretório ~/bin do usuário e coloque o script dentro. Este diretório já se encontra no PATH, só falta criar ele.
Abra um terminal como usuário normal (Não root) e execute o comando abaixo.

Código: [Selecionar]
mkdir ~/bin
No seu caso será criada a pasta /home/lab/bin

Mova o script pra dentro dela e modifique o caminho no crontab. O script deve tá marcado pra execução.

Código: [Selecionar]
chmod +x /home/lab/bin/bkp.sh
Título: Re:Crontab não executa Script
Enviado por: pentestbox em 18 de Novembro de 2016, 13:57
Executar aplicações no cron é um pouco traiçoeiro. Você precisa estar atento pra algumas coisas:
1. Não há gráficos disponíveis.
2. Não há teclado disponível (você não pode fazer entrada de nada, nem de senhas, caso use "su" ou "sudo").
3. O ambiente de execução é reduzidíssimo, então várias vezes você tenta chamar um outro aplicativo e ele simplesmente não está no "path".

Aposto que o que te derrubou foi a armadilha #3. Verifique teu script, se vc não está chamando algum aplicativo que não esteja em /bin:/usr/bin.

O aplicativo que esta no meu script é o Rsync, ele será usado para fazer as cópias dos meus arquivos para o diretório /var/www/html do apache, acho que o que esta pegando é realmente essa questão do sudo que estou usando, uma vez que o meu usuário não tem permissão de escrever no diretório /var/www/html, então eu pensei que ao utilizar o sudo tendo permissão de root eu conseguiria fazer esse script funcionar no crontab.

o meu script está assim:

#!/bin/bash

rsync=`rsync -avz /home/lab/*.sh /var/www/html`

$rsync


É apenas um script de teste bobo, apenas estou testando pois estou aprendendo shell script, so que me deparei com esse problema do sudo, e por isso quero tentar resolver, pois futuramente em scripts importantes eu precisarei utilizar com as permissões de sudo.
Título: Re:Crontab não executa Script
Enviado por: zekkerj em 18 de Novembro de 2016, 14:37
Ponha o caminho completo pro "rsync" no comando, deve resolver.

Quanto ao sudo, como eu disse na armadilha #2, não há teclado disponível, entaõ o sudo não pode ler uma senha.
Solução: cadastre o seu usuário pra não precisar de senha no sudo, pra esse comando. Vc usa o comando "visudo" pra editar o arquivo /etc/sudoers (não tente editá-lo diretamente de forma nenhuma!!!), adicione esta linha ao final:

fulano ALL=(ALL) NOPASSWD: /usr/bin/rsync
Título: Re:Crontab não executa Script
Enviado por: selvaking em 20 de Novembro de 2016, 10:55
Então falta vc colocar no seu crontab o usuário que vai executar o script que no seu caso é o root.

Código: [Selecionar]
5 * * * *   root     /home/lab/bkp.sh
Título: Re:Crontab não executa Script
Enviado por: zekkerj em 20 de Novembro de 2016, 20:31
Isso não é necessário no crontab local, acionado pelo comando "crontab -e".
Título: Re:Crontab não executa Script
Enviado por: pentestbox em 29 de Novembro de 2016, 11:15
Ole pessoal, acho que consegui resolver, coloquei o caminho completo do rsync no script e parece que agora foi, so que as vezes eu acho que não vai de 5 em 5 minutos, as vezes acho que demora mais tempo, mas enfim vou continuar fazendo mais alguns testes aqui pra ver.
Título: Re:Crontab não executa Script
Enviado por: zekkerj em 29 de Novembro de 2016, 12:05
Pode ser o tempo pra executar a cópia. Com mais ou menos quantidade de arquivos, vai variar o tempo pra vc perceber alteração no diretório de destino.