我是編寫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