Pular para o conteúdo

Script não roda no Cron [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Script não roda no Cron [RESOLVIDO]

Enviado em 18/03/2014 - 15:59h

Boa tarde a todos!!!

Galera, a um tempo atrás eu estava tendo no shell, de como achar o ultimo arquivo colocado em um diretório. Na época eu testei os dois comandos, que o pessoal aqui do forum me ajudou a montar, e os dois funcionaram muito bem, mas um que usava o comando find estava dando alguns erros. O que eu gostaria de saber é o seguinte, no meu script eu so preciso deste comando pra selecionar um arquivo e enviar ele pra outro servidor, quando eu rodo o script na mão, ele funciona perfeitamente... Porém quando eu coloco ele no cron, o script não funciona, a princípio eu pensei que fosse por causa dos erros que ele estava apresentando, ai eu corrigi todos, e mesmo assim o script não roda no cron, so roda se for a mão, ai ele funciona perfeitamente. Eu ja dei todas as permissões que ele precisava e o unico comando que falha é esse:

cp "`ls -1trap | grep -v '/$' | tail -n 1`" $DIR

Será que alguem que já passou por isto saberia me ajudar???
Desde já eu agradeço pela atenção!!!

Responder tópico

2. Re: Script não roda no Cron [RESOLVIDO]

Melhor resposta

Enviado em 23/03/2014 - 16:33h

Usando a interpretação de texto

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
você troca:


find . -type f -maxdepth 1 -printf "%C@ %p\\n" | sort -r | awk 'NR==1 {print $2}' | xargs -i cp "{}" $DIR
por


find . -maxdepth 1 -type f -printf "%C@ %p\\n" | sort -r | awk 'NR==1 {print $2}' | xargs -i cp "{}" $DIR
e deve funcionar...

Outra coisa que é muito importante é que quando você roda um script no cron ele roda em um subshell, e usa como diretório base o home do usuário que está rodando e não o diretório atual, de forma que você deverá sempre usar o caminho completo dos diretorios e arquivos...

Por exemplo, substitua
find . -maxdepth 1
por
find /caminho/completo/do/diretorio -maxdepth 1

Substitua
cp "`ls -1trap | grep -v '/$' | tail -n 1`" $DIR
por
cp "`ls -1trap /caminho/completo/do/diretorio | grep -v '/$' | tail -n 1`" $DIR

3. Re: Script não roda no Cron [RESOLVIDO]

Enviado em 19/03/2014 - 14:29h

E ai pessoal, alguém saberia me ajudar???

4. Re: Script não roda no Cron [RESOLVIDO]

Enviado em 19/03/2014 - 14:41h

Ameace o cron com a fúria de Crom, deve funcionar rsrsrs

Brincadeiras à parte, posta aqui seu shell script e a mensagem de erro que dá quando a linha acima dá erro.

5. Re: Script não roda no Cron [RESOLVIDO]

Enviado em 20/03/2014 - 14:35h

rsrsrsrsrsrsrsrsrs.... Eu estou postando parte do código que não roda quando ele está no cron, o comando que dava erro era este:

find . -type f -maxdepth 1 -printf "%C@ %p\\n" | sort -r | awk 'NR==1 {print $2}' | xargs -i cp "{}" $DIR

Ai surgia a seguinte mensagem:

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

Ai o que eu fiz foi utilizar outro comando que fazia a mesma coisa, e quando eu rodo na mão não aparece mensagem alguma de erro, so que no cron ele simplesmente não roda. O script novo ficou assim.


test -e $DIR/*.pdf && rm $DIR/*

cp $origem/*.pdf $d_script


cp "`ls -1trap | grep -v '/$' | tail -n 1`" $DIR


rm $d_script/*.pdf


6. Re: Script não roda no Cron [RESOLVIDO]

Enviado em 24/03/2014 - 15:28h

Nossa galera, valeu mesmo pela ajuda.

phoemur realmente foi como você havia falado, a primeira alteração corrigiu todos os erros, e a segunda, onde eu deveria informar o caminho do diretório no comando permitiu que o cron executasse corretamente. Muito obrigado mesmo, você salvou a minha vida cara, eu ja tava quase enlouquecendo com esse comando.... rsrsrsrsrs!!!!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder