我是编写Unix shell脚本的新手。我编写了一个包含Oracle数据库sql代码的脚本。正如你在下面看到的,它会在文本文件中写出大量的sql代码,并且我想通过邮件发送这些输出。 当我手动运行时,它工作得很好。但是当在crontab上它不会按照我的意愿去做。 Sql代码工作得很好,文本文件被更新,它发送邮件但邮件中的值为空。 我读了一些其他问题,我写了所有的路径,但我找不到问题。我希望你能找到解决办法。 谢谢你,最好的问候当我手动运行脚本时脚本工作的很好,但是在crontab上出现了一些问题
#!/usr/bin/ksh
./home/partner/.profile
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9
ORACLE_BASE=/oracle
ORACLE_SID=----------------
ORACLE_HOME=-------------
USER=------------
PASSWD=--------------
SCRIPTPATH=/home/path-to/scripts/
spoolfile=$SCRIPTPATH/textfile1.txt
spoolfile2=$SCRIPTPATH/textfile2.txt
export NLS_LANG ORACLE_BASE ORACLE_SID ORACLE_HOME
$ORACLE_HOME/bin/sqlplus $USER/$PASSWD<<EOF
@$SCRIPTPATH/code1.sql $spoolfile
exit;
EOF
$ORACLE_HOME/bin/sqlplus $USER/$PASSWD<<EOF
@$SCRIPTPATH/code2.sql $spoolfile2
exit;
EOF
value1=`/usr/bin/cat textfile1.txt`
value2=`/usr/bin/cat textfile2.txt`
if [[ -s $spoolfile ]] ; then
echo "mail1 "$value1 "text "$value2 | mailx -s "subject" [email protected]
else
echo "mail2" | mailx -s "subject" [email protected]
fi
你可以编辑你的crontab发送输出到日志查找'... >> log.txt'并上传那个? – mmmmmpie 2015-02-09 20:58:34
如果您作为cron的用户运行,它可能也是一个权限问题。 – MiltoxBeyond 2015-02-09 20:59:41
执行crontab时,常见问题来自设置环境变量。确保在由crontab调用的脚本中设置环境变量。 – Cyryl1972 2015-02-11 10:20:01