Shell脚本手动运行,但无法从cron正确运行

时间:2015-08-27 15:30:36

标签: linux shell unix cron

我遇到一个与shell脚本相关的问题,但我不知道如何解决它。

我有一个放在文件夹中的shell脚本。此外,脚本中所需的支持文件也位于同一文件夹中。

当我手动运行脚本时,一切都按预期工作。所有将在运行时更新的支持文件都会按预期更新。

但是,当我在cron中设置脚本时,查询正在执行,但支持文件没有得到更新。 我在不同用户的cron下设置脚本,我已将脚本和相关文件放在这个不同的用户下。

问题是什么?

脚本

#!/bin/ksh
sh /export/home/user1/.bash_profile
FILE="/location/maildetails.lst"
MAIL="/location/mailbody.txt"

export PATH=$PATH:$HOME/bin:/home/oinstall/bin:/data/oracle/product/11.1.0/client_1/bin:/usr/local/mysql/bin
export ORACLE_HOME=/data/oracle/product/11.1.0/client_1
if [ -f $MAIL ]
then
rm $MAIL
fi
if [ -f $FILE ]
then
rm $FILE
fi

sqlplus 'connection string' << EOF > /location/count.lst    // This count.list is not getting updated when the script is running under cron. but it gets updated when i am manually hitting
SELECT count(*) FROM query_Table where STOP_DATE - trunc(SYSDATE) = 10;
exit
EOF
val1=`grep -in "^" count.lst|grep "^14:"|cut -d ":" -f 2`
if [ $val1 -gt 0 ]
then
echo "starting the mailer module..."
sqlplus 'connection string' << EOF1 > /dev/null
@/location/query_details.sql;
exit
EOF1
..
logic
...
exit 0

query_details.sql

set pages 0
set lines 450
SPOOL /location/query_details.lst  // This is also not getting updated when running from cron
select  from query_Table STOP_DATE - trunc(SYSDATE) = 10;
SPOOL OFF

0 个答案:

没有答案