A execução do shellscript com o cronjob está causando problemas, executando manualmente não. Idéias?

1

Eu fiz um script chamado /home/root/cron_grads.sh (chmodded 755) no meu servidor.

Nesse diretório, há mais scripts de grads, como 500hPa_p0.gs (644). Meu script principal cria um arquivo temporário grads_exec.gs , preenche-o com algum conteúdo e então tenta copiar o conteúdo de 500hPa_p0.gs para o final dele antes de executar a coisa toda Isso funciona bem, mesmo no servidor se eu iniciá-lo manualmente .

Mas usando crontab -e com:

42 0,6,12,18 * * * /home/root/grads/cron_grads.sh

... ocorre um erro. O script começa, mas o graduado diz:

cat: 500hPa_p0.gs: File or directory not found

Estou usando o bash em cron_grads.sh com #!/bin/bash no topo. crontab -e também contém SHELL=/bin/bash .

Alguma idéia?

    
por Dre 30.05.2014 / 13:46

2 respostas

0

Este é um problema dentro do seu script cron_grads.sh . Quando você chama manualmente, eu suponho que você está em /home/root , então seria algo como:

echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

Mas se você executou isso de enquanto em /home/oli/ , ele tentaria gravar em /home/oli/grads_exec.gs e ler em /home/oli/500hPa_p0.gs . É por isso que o gato está explodindo no seu caso.

Para corrigir, grave explicitamente no diretório correto (e use um caminho absoluto):

cd /home/root
echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

Ou use caminhos absolutos em todos os lugares:

echo test > /home/root/grads_exec.gs
cat /home/root/500hPa_p0.gs >> /home/root/grads_exec.gs

Ou por segurança, ambos.

    
por Oli 30.05.2014 / 15:12
0
  • Tente usar o caminho absoluto para todos os seus comandos ou obtenha a variável PATH como aqui: link
por laugeo 30.05.2014 / 14:00