“comando não encontrado” ao executar um script via cron

20

Eu quero rodar meu script no crontab, mas tenho alguns problemas ...

No meu script, eu corro este comando:

db2 connect to myDB2

Isso funciona bem quando eu executo isso como usuário db2inst1 , mas quando eu executo este script em db2inst1 crontab , eu recebo isso:

  

db2: comando não encontrado.

Como posso resolver isso?

    
por Wolfy 09.06.2011 / 11:15

2 respostas

34

Para evitar a necessidade de digitar o caminho absoluto para um comando, os shells introduziram a variável de ambiente $PATH , cada diretório é separado por : e as pesquisas são feitas da esquerda para a direita. cron geralmente limpa todo o ambiente, incluindo essa variável $PATH . Portanto, o script pode se comportar de maneira diferente em seu cron comparado ao comportamento no shell.

Use caminhos absolutos

Execute which db2 como db2inst1 user para obter o caminho completo para o programa db2 . Se a saída for /usr/bin/db2 , seu comando cron será parecido com:

/usr/bin/db2 connect to myDB2

Defina a variável PATH

Execute echo "$PATH" como db2inst1 user para obter a variável $PATH e certifique-se de que esta variável esteja disponível em seu script cron também. Por exemplo, se a saída fosse /usr/local/bin:/usr/bin:/bin , você colocaria a próxima linha no topo do seu script de shell:

export PATH="/usr/local/bin:/usr/bin:/bin"
    
por Lekensteyn 09.06.2011 / 11:18
3

Você deve definir o que db2 e myDB2 são, caso contrário, use a localização absoluta de ' arquivo ' ou ' aplicativo 'que querem correr.

Exemplo:

/bin/rm /home/ubuntu/a.txt
    
por Mahmudin Ashar 09.06.2011 / 13:42

Tags