2017-05-19 5 views
0

J'ai un code qui, lorsqu'il est exécuté manuellement (via cette commande soit ./script.sh) affecte le résultat de la requête à une variable mais lorsqu'il est exécuté automatiquement via crontab alors le résultat de la requête n'est pas affecté à la variable.valeur de variable non affectée dans cronjob

S'il vous plaît trouverez ci-dessous le code:

diff=0; 

diff=`sqlplus -s user/[email protected] << END 
     set pagesize 0 feedback off verify off heading off echo off; 
     SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS')) * 24 * 60 
     difference_in_minutes 
     from dual; 
END` 



echo "Difference is $diff ">>/backup2/softdev/settlement/p.txt 
+0

Je pense de crontab vous devez donner le chemin complet de sqlplus – fortune

+0

Utilisez 'exit;' avant 'END'. – Utsav

Répondre

0

je l'ai fait comme Cron doesnot connaître le chemin de SQLPlus il n'exécute pas la requête dès que le chemin est donné à cron le travail répond parfaitement

Voici la solution:

ORACLE_HOME =/oracle/app/oracle/product/11.2.0/db_1 export ORACLE_HOME

dateToday = date +%Y%m%d%H%M%S

diff = 0;

timeRightNow = '20170519180000' timeoffile = '20170519175500'

diff = $ORACLE_HOME/bin/sqlplus -s user/[email protected] << END set pagesize 0 feedback off verify off heading off echo off; SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS')) * 24 * 60 difference_in_minutes from dual; END

echo "La différence est $ diff" >>/backup2/SoftDev/règlement/p.txt

0

Il se produit généralement parce que votre Cron ne sont pas au courant de vos variables initialisées dans .profile. Même le chemin de sqlplus n'est pas disponible lorsque vous exécutez ce script via cron. Donc, pour résoudre le problème, définissez le travail cron au format ci-dessous, et cela fonctionnera bien.

00 * * * * . ~/.profile && /home/absolut_path_to_script.sh > /home/log_file_path.txt 
+0

pourriez-vous s'il vous plaît m'en dire plus sur .profile –

+0

utilisé pour définir des éléments environnementaux pour un shell des utilisateurs. Des éléments tels que umask et des variables telles que PS1 ou PATH. – Rups