Skip to content
Advertisement

Bash Script Unstable Result

I have bash script and I put in the crontab. It runs every 10 minutes. When I run it manually, it gives perfect results. It creates “.tmp” files and these “.tmp” files are not empty, but Crontab results are not as I expected. it only creates “.tmp” files. Contents of “.tmp” files are empty. In this computer there more than one user. Could it be user privilege issue? What could be the main reason?

Thanks in advance..

Sorry, I forgot 🙂 my code.

export GGATE=/ggate/ggs11g
alias gate='clear;cd $GGATE;./ggsci'
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_SID=KNNPRO17_1
export PATH=$PATH:$ORACLE_HOME/bin:$LD_LIBRARY_PATH:${GGS_HOME}
export LIBPATH=$ORACLE_HOME/lib:$GGS_HOME:$PATH
export LD_LIBRARY_PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/lib:$GGS_HOME

MYGGSCI=$GGATE/ggsci
LOGDIR=$GGATE/scripts/logs
GGSLAGFILE01=${LOGDIR}/ggslagfile01.tmp
GGSLAGFILE02=${LOGDIR}/ggslagfile02.tmp
GGSLAG_EMAIL=${LOGDIR}/ggslag_email.tmp

$MYGGSCI << eof > $GGSLAGFILE01
info all
eof

cat $GGSLAGFILE01 | egrep -i '(EXTRACT)'|cut -d":" -f 1,2,3,4,5,6 | tr ":" " "|tr -s '[:space:]'|cut -d" " -f1,2,3,4,5,6,7,8,9 >$GGSLAGFILE02

awk '{if ( $4 > 00 || $5 >=30 || $7 > 00 || $8 >=30 ) {print $1 " " $3 " HAS LAG of " $4" hour " $5 " min for checkpoint " $7 " hour " $8 " min -- at -- " d "n" }}' d="$(date)" $GGSLAGFILE02 > $GGSLAG_EMAIL

if [ -s $GGSLAG_EMAIL ]
  then
    mailx -s "${ORACLE_SID} Extract LAG ! on GoldenGate" "it.io.db.goldengate@vodafone.com" < $GGSLAG_EMAIL
    exit 1
  else
    exit 0
fi

and

my crontab is

00,10,20,30,40,50 * * * * ksh /export/GoldenGate/scripts/check.sh 2>/dev/null

Advertisement

Answer

It’s possible that your:

/ggate/ggs11g/ggsci

which you call from

$MYGGSCI

requires some environment variables from the user you are running it as. To see if this is the issue, please modify the crontab entry like so:

00,10,20,30,40,50 * * * * . $HOME/.bashrc; /bin/ksh /export/GoldenGate/scripts/check.sh 2>/dev/null

The

. $HOME/.bashrc;

sources the environment variables from your “.bashrc” file.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement