Script não funcionado corretamente no CRON

13. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 07:54h

alexandregms escreveu:

Faça assim pra gente matar essa charada de uma vez por todas:
Vá à pasta /tmp e execute o seu script de lá com "sh -x", exemplo:

user1@ServerX:/tmp$ sh -x /caminho/seu_script.sh

Veja onde vai dar erro e poste aqui :-)




Segue:


[root@zeta tmp]# sh -x /root/shellpro/IFT/RemoveOldFiles.sh
++ date +%Y_%m_%d
+ remove_date=2013_11_26
+ log=/root/shellpro/IFT/log/Remove/RemoveOldFiles.log
+ tmp=/root/shellpro/IFT/FilesForDelete-tmp.txt
+ touch /root/shellpro/IFT/FilesForDelete-tmp.txt
+ dias=60
+ cd /dados/downloads-oldfiles
++ date
+ echo -e 'Data da Ultima Atualização: Ter Nov 26 07:53:31 BRST 2013 '
+ echo ' '
+ echo '================= Arquivos com mais de 60 dias, Marcados para EXCLUSÃO! ================= '
+ echo ' '
+ echo .
+ grep -v aquota.user
+ grep -v index.html
+ grep -v aquota.group
+ /usr/bin/find /dados/downloads-oldfiles Bannerromiintegrasultado.zip -type f -atime +60
+ read x
+ chmod 777 /root/shellpro/IFT/log/Remove/RemoveOldFiles.log
+ /bin/mail -s 'LOG dos Arquivos Excluidos do IFT (Internet File Transfer) ROMI ' teste@teste.com
[root@zeta tmp]#



  


14. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 07:59h


Analisando cada post, deu pra perceber o seguinte....

1º - Se o script é executado normalmente na "mão", então suponho que o problema pode está na sintaxe do arquivo crontab

2º - Analisando seu arquivo crontab deu pra ver uma coisa interessante. que você está executando o script pelo cron usando um usuário chamado sh.

Perguntas:

1º -Com qual usuário está executando o script na "mão" ?

2º - Esse usuário existe no seu sistema e se existe o mesmo tem permissão para acessar e gravar a pasta /root ? pois até onde sei a pasta /root só pode ser acessada pelo root.

Retorna ai..


1º Executo com o root.

2º sh estava colocando como comando, para chamar o script, mas já tentei rodar apenas chamando o script e o mesmo problema acontece. já até tentei onde está o sh, colocar root. e nada.


15. Re: Script não funcionado corretamente no CRON

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/11/2013 - 09:19h

danielviolin escreveu:


Analisando cada post, deu pra perceber o seguinte....

1º - Se o script é executado normalmente na "mão", então suponho que o problema pode está na sintaxe do arquivo crontab

2º - Analisando seu arquivo crontab deu pra ver uma coisa interessante. que você está executando o script pelo cron usando um usuário chamado sh.

Perguntas:

1º -Com qual usuário está executando o script na "mão" ?

2º - Esse usuário existe no seu sistema e se existe o mesmo tem permissão para acessar e gravar a pasta /root ? pois até onde sei a pasta /root só pode ser acessada pelo root.

Retorna ai..


1º Executo com o root.

2º sh estava colocando como comando, para chamar o script, mas já tentei rodar apenas chamando o script e o mesmo problema acontece. já até tentei onde está o sh, colocar root. e nada.


Faça as alterações no /etc/crontab informadas abaixo e reinicie o serviço:

e mude a linha:

SHELL="/bin/sh" 


para

SHELL="/bin/bash 


e altere a linha que executa o script para:
20 16 * * * root /root/shellpro/IFT/RemoveOldFiles.sh >/dev/null 


retorna ai...


16. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 09:27h

eabreu...

O Arquivo /etc/crontab já estava com a linha: SHELL=/bin/bash

Fiz o que você pediu no crontab -e, dessa vez não executou e apresentou a seguinte mensagem no arquivo: /var/spool/mail/root


From root@zeta.localdomain Tue Nov 26 09:23:01 2013
Return-Path: <root@zeta.localdomain>
X-Original-To: root
Delivered-To: root@zeta.localdomain
Received: by zeta.localdomain (Postfix, from userid 0)
id 15CD02615D; Tue, 26 Nov 2013 09:23:01 -0200 (BRST)
From: root@zeta.localdomain (Cron Daemon)
To: root@zeta.localdomain
Subject: Cron <root@zeta> root /root/shellpro/IFT/RemoveOldFiles.sh >/dev/null
Content-Type: text/plain; charset=ISO-8859-1
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20131126112301.15CD02615D@zeta.localdomain>
Date: Tue, 26 Nov 2013 09:23:01 -0200 (BRST)

/bin/sh: root: command not found




17. Re: Script não funcionado corretamente no CRON

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 26/11/2013 - 09:35h

danielviolin escreveu:

eabreu...

O Arquivo /etc/crontab já estava com a linha: SHELL=/bin/bash

Fiz o que você pediu no crontab -e, dessa vez não executou e apresentou a seguinte mensagem no arquivo: /var/spool/mail/root


From root@zeta.localdomain Tue Nov 26 09:23:01 2013
Return-Path: <root@zeta.localdomain>
X-Original-To: root
Delivered-To: root@zeta.localdomain
Received: by zeta.localdomain (Postfix, from userid 0)
id 15CD02615D; Tue, 26 Nov 2013 09:23:01 -0200 (BRST)
From: root@zeta.localdomain (Cron Daemon)
To: root@zeta.localdomain
Subject: Cron <root@zeta> root /root/shellpro/IFT/RemoveOldFiles.sh >/dev/null
Content-Type: text/plain; charset=ISO-8859-1
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20131126112301.15CD02615D@zeta.localdomain>
Date: Tue, 26 Nov 2013 09:23:01 -0200 (BRST)

/bin/sh: root: command not found



Se usou o crontab -e como root pode remover o root da linha:

20 16 * * * /root/shellpro/IFT/RemoveOldFiles.sh >/dev/null


18. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 10:14h

mesma coisa.

tá osso esse problema. :/


19. Re: Script não funcionado corretamente no CRON

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/11/2013 - 11:08h

esqueci de fechar as aspas na variavél shell, tem que ficar assim:

SHELL="/bin/bash" 


e na linha:

20 16 * * * /root/shellpro/IFT/RemoveOldFiles.sh >/dev/null 


mude para:

20 16 * * * /root/shellpro/IFT/RemoveOldFiles.sh 



20. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 11:23h

mesma coisa.


21. Re: Script não funcionado corretamente no CRON

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/11/2013 - 13:11h

Seu script tem um problema sério: você não amarra os valores de variaveis de ambiente que podem afetar o funcionamento de vários comandos que você vai chamar ao longo da execução do script. Desse modo, é possível que esse seja o seu problema.

Minha sugestão é que você defina, minimamente, as variáveis de ambiente PATH (que controla onde o shell vai buscar os comandos) e LC_ALL (que é a principal variável no controle de locales).

Inicialmente, eu tentaria rodar o script na mão, mas colocando logo no início do script os seguinte comandos.

LC_ALL=C
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH LC_ALL


Veja o que vai acontecer quando você rodar na mão. Pode ser que passe a ficar também como anexo, por causa da amarração ao locale "C", que não aceita acentos. Se você quiser acentos, pode usar outra locale, tal como en_US.UTF-8 ou mesm pt_BR.UTF-8.


22. Re: Script não funcionado corretamente no CRON

Daniel
danielviolin

(usa Red Hat)

Enviado em 26/11/2013 - 13:27h

Obrigado pela ajuda Paulo, mas não resolveu.
Tanto com C, quanto com pt_BR.UTF-8 e também com o en_US.UTF-8.

Vem com anexo, agora também quando executa na mão.






23. Re: Script não funcionado corretamente no CRON

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/11/2013 - 13:38h

Pelo menos a coisa ficou uniforme. Já é um começo.

Alguma outra variável de ambiente, que tem um valor adequado no seu shell mas não aparece na invocação via cron, está afetando o comportamento do programa.

Outra linha de solução seria você usar outro programa, em lugar do mail, para enviar a mensagem. Eu testaria o sendmail, sendEmail ou mesmo o mutt.


24. Re: Script não funcionado corretamente no CRON

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/11/2013 - 14:33h

altera o crontab do root, deixando iqual ao conteúdo abaixo e depois da alteração reinicia o daemon do cron.

20 16 * * * /bin/bash /root/shellpro/IFT/RemoveOldFiles.sh 


estou supondo que o interpretador usado no cabeçario do script é o bash.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts