altere seu script de shell para fornecer um caminho completo ou relativo para o executável:
./executableFile ...
No uso interativo, você deve ter .
ou o diretório cardme/bin
em seu PATH: isso não será verdadeiro no ambiente do cron.
Estou preso ao seguinte problema (simples): Eu quero um script para ser executado a cada 10 minutos. Este script chama arquivos executáveis. Eu uso crontab e ksh em um sistema AIX 5.3.
O script faz uso de caminhos relativos, mas a alteração do caminho do executável para absoluto não fez nenhuma diferença. Então, depois de algumas tentativas e esta resposta , eu criei a seguinte entrada crontab (* / 10 não funciona)
rs14:/home/viloin# crontab -l
0,10,20,30,40,50 * * * * cd /home/viloin/cardme/bin && /bin/ksh myScript.ksh
aqui está o script:
#!/bin/ksh
Main(){
printf "executed in : %s\n" $(pwd);
executableFile 2>/dev/null 1>&2;
exeResult=$?; # expected return value : 90
printf "%s\n" $exeResult;
}
Main;
Aqui está a saída quando eu executo o comando manualmente:
rs14:/home/viloin/cardme/bin# cd /home/viloin/cardme/bin && /bin/ksh myScript.ksh
executed in : /home/viloin/cardme/bin
90
E finalmente a saída quando o crontab o executa para mim (do email):
Subject: Output from cron job cd /home/viloin/cardme/bin && /bin/ksh myScript.ksh, [email protected], exit status 0
Cron Environment:
SHELL = /usr/bin/sh
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin
CRONDIR=/var/spool/cron/crontabs
ATDIR=/var/spool/cron/atjobs
LOGNAME=viloin
HOME=/home/viloin
Your "cron" job executed on rs14.saprr.local on Wed Aug 24 11:50:00 CEST 2016
cd /home/viloin/cardme/bin && /bin/ksh myScript.ksh
produced the following output:
executed in : /home/viloin/cardme/bin
127
*************************************************
Cron: The previous message is the standard output
and standard error of one of your cron commands.
Meu arquivo myScript.ksh tem todos os direitos:
rs14:/home/viloin/cardme/bin# ll -al myScript.ksh
-rwxrwxrwx 1 viloin cardme 174 Aug 24 10:54 myScript.ksh
Para ter certeza de que meu executableFile não está realmente saindo com o código 127, usei os binários de echo, renomeiei e tenho o mesmo comportamento (exceto que ele retorna 0 em vez de 90 quando eu executo o comando manualmente).
O que está causando essa diferença entre digitar manualmente o comando e pedir ao crontab para fazer isso por mim?
Tags cron executable ksh scripting aix