独立的Shell脚本工作正常但不能与crontab一起使用

时间:2017-07-09 18:46:30

标签: shell cron

我有一个shell脚本,其中包含以下语句。它独立执行时工作正常。

$ORACLEHOME/bin/sqlplus -s $BDBUSER@$LINKNAME/$BDBPASSWORD <<EOF
  DECLARE
  COUNT1 NUMBER:=0;
  BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE TABLE1';
    EXECUTE IMMEDIATE 'CREATE TABLE TABLE1 AS SELECT * FROM $SCHEMA_NAME.TABLE2@DBLINKNAME';
  END;
  /

EOF

但是当我从crontab调用此ffrom时,它失败了。我的crontab看起来像

*/1 * * * * /bin/sh /home/mig/Test.sh > /home/mig/Test.txt

我在日志中收到以下错误。

Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

尝试在shell脚本的顶部添加此行。

doctype html
html
  head
    title= title
  body
    h1= text
  script.
    console.log('#{token}')

使用shell上的echo命令获取ORACLE_HOME环境变量的值

答案 1 :(得分:1)

Oracle需要ORACLE_HOME,您的脚本需要ORACLEHOME 毋庸置疑,将脚本更改为使用ORACLE_HOME会更好,但这不是问题的根本原因。

crontab命令将跳过您的登录脚本。我认为ORACLE_HOME已设置在.profile中,因此请执行此操作。

*/1 * * * * source  ~/.profile; /bin/sh /home/mig/Test.sh > /home/mig/Test.txt