从shell脚本运行时,sqlplus查询不会将结果保存到文件

时间:2014-01-10 20:03:49

标签: shell sqlplus

我有一个像下面这样的shell脚本。当我手动运行它时,输出将附加到文件。当我安排脚本从crontab运行时,输出不会附加到输出文件。

#!/bin/bash
cd /home/sample

echo "SELECT count (*) FROM Mytable;"| sqlplus -L user/pass@dbname  > sample.txt

echo "SELECT name, age count(*) from mytable "| sqlplus -L lmsuser/lmsuser@LMSDB > sample1.txt

2 个答案:

答案 0 :(得分:0)

Cron对输出做了有趣的事情,因为它显然没有连接到人类会看到的任何东西。

   cron then wakes up every minute, examining all stored crontabs,  check-
   ing  each  command  to  see  if it should be run in the current minute.
   When executing commands, any output is  mailed  to  the  owner  of  the
   crontab (or to the user named in the MAILTO environment variable in the
   crontab, if such exists).  The children copies of  cron  running  these
   processes  have their name coerced to uppercase, as will be seen in the
   syslog and ps output.

我不知道这发生在哪里;它可能会影响标准。

检查您的电子邮件,看看是否已将输出重定向到那里。

答案 1 :(得分:0)

我正面临同样的问题。这通常是因为您的cron不知道您在.profile中初始化的变量。当您通过cron运行此脚本时,甚至sqlplus的路径也不可用。因此,要解决此问题,请以下面的格式设置cron作业,它将正常工作。

00 * * * * . ~/.profile && /home/absolut_path_to_script.sh > /home/log_file_path.txt

P.S。我已经使用了。在.profile前面,以便它加载相同的。它解决了我的问题,而cron正在产生所需的输出。