2016-06-02 1 views
0

У меня есть сценарий оболочки, который запускает запрос SQLplus и направляет его в файл. SQL-запрос занимает около 30 секунд для запуска внутри скрипта, а затем отправляет его в файл output.txt. Когда я вручную запускаю скрипт из приглашения Unix, все работает нормально (вывод отправляется в файл output.txt), но когда тот же сценарий оболочки автоматически запускается из заданного задания cron, он создает нулевой байт (вывод .txt) без содержимого. Кто-нибудь есть идеи, почему это работает найти вручную, но не тогда, когда crontab пинает его?Shell script spools в файл, но создает файл с нулевым байтом при запуске crontab

UPDATE:

Я посмотрел на локальный файл почты и увидел ошибку последующей:

/home/tuser01/mon.sh[21]: /bin/sqlplus: not found 

Вот моя SQLConnect в сценарии:

$ORACLE_HOME/bin/sqlplus userid/password << Eossql 

Любые идеи, почему я делаю не получить «не найден», когда я запускаю его вручную, но когда он запускается из crontab, он не может найти это местоположение?

ответ

0

Возможно, потому что $ PATH отличается. Переадресация на output.txt происходит до того, как оболочка узнает, что не может выполнить команду.

Cron может отправлять вам местную почту с выходом ошибки.

+0

Спасибо, я нашел ошибку в моей местной почте. Я обновил свой первоначальный вопрос с ошибкой, которую я получаю. Знаете ли вы, почему я получаю ошибку «не найден», только когда она запускается из cron? – connollyc4

+1

Переменная ORACLE_HOME, очевидно, не установлена. Вы, по-видимому, устанавливаете ORACLE_HOME только в интерактивных оболочках или только в оболочках bash. Установите любые переменные среды, которые вам нужны в crontab. – DigitalRoss

+1

Если вы посмотрите на код, который вы видите, вы пытаетесь вызвать '$ ORACLE_HOME/bin/sqlplus', и то, что он жалуется, чтобы не найти это'/bin/sqlplus', который сообщает нам, что cronjob не знает значения переменная среды ORACLE_HOME –

Смежные вопросы