Cron Job не работает

Oracle Linux 5.10

Я могу вручную запустить скрипт «tblspc_usage.sh» успешно как пользователь оракула. Я знаю это, потому что он отправляет мне отчет.

Но он не запускается вообще от cron. Он не создает файл журнала.

[oracle@dub-ImrORA3 scripts]$ crontab -l # user /bin/sh SHELL=/bin/sh # mail to oracle user MAILTO=oracle # run at 9:45 AM monday thur friday 45 09 * * 1-5 /home/oracle/scripts/tblspc_usage.sh 2>&1 /home/oracle/scripts/tblspc_usage.log [oracle@dub-ImrORA3 scripts]$ ls -al tblspc_usage.sh -rwxrwxr-- 1 oracle oinstall 2013 Jan 20 09:12 tblspc_usage.sh 

Итак, вот электронная почта в / var / mail / oracle /home/oracle/scripts/tblspc_usage.sh: строка 15: sqlplus: команда не найден grep: body.log: нет такого файла или каталога

Вот мой сценарий оболочки:

 #!/bin/sh # # tblspc_usage.sh #======================================= # # Checks for tablespace usage exceeding 90% and email the details # does not check undo or temp tablespaces #======================================= # ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ; export ORACLE_HOME ORACLE_SID=IMR1 ; export ORACLE_SID user="system" pass="letmein" # bogus passwd sqlplus -S $user/$pass <<EOF column "TOTAL ALLOC (MB)" format 9,999,990.00 column "TOTAL PHYS ALLOC (MB)" format 9,999,990.00 column "USED (MB)" format 9,999,990.00 column "FREE (MB)" format 9,999,990.00 column "% USED" format 990.00 set echo off spool body.log select a.tablespace_name, a.bytes_alloc/(1024*1024) "TOTAL ALLOC (MB)", a.physical_bytes/(1024*1024) "TOTAL PHYS ALLOC (MB)", nvl(b.tot_used,0)/(1024*1024) "USED (MB)", (nvl(b.tot_used,0)/a.bytes_alloc)*100 "USED %" from (select tablespace_name, sum(bytes) physical_bytes, sum(decode(autoextensible,'NO',bytes,'YES',maxbytes)) bytes_alloc from dba_data_files group by tablespace_name ) a, (select tablespace_name, sum(bytes) tot_used from dba_segments group by tablespace_name ) b where a.tablespace_name = b.tablespace_name (+) and a.tablespace_name not in (select distinct tablespace_name from dba_temp_files ) and a.tablespace_name not like 'UNDO%' and ( nvl(b.tot_used,0)/a.bytes_alloc)*100 >= 90.00 order by 1; spool off exit EOF # if the word "TABLESPACE" exists in the spool file # then at least one tablespace has usage over 90% if grep -q TABLESPACE "body.log"; then cat /home/oracle/scripts/body.log | mailx -s "ORA3 - Tablespace(s) 90% Full" \ stringer.bell@xxx.com fi 

2 Solutions collect form web for “Cron Job не работает”

Сообщение sqlplus: command not found дает ответ. Поскольку у вас есть переменная окружения ORACLE_HOME, поместите эту строку в свой скрипт после экспорта ORACLE_HOME:

export PATH=$PATH:$ORACLE_HOME/bin

У меня также есть суеверие экспорта TNS_ADMIN:

export TNS_ADMIN=$ORACLE_HOME/network/admin

Я не знаю, строго ли это.

Похоже, вы обновили свой пост с дополнительной информацией, как сказал Брюс, эта ошибка говорит вам, что путь ORACLE_HOME отсутствует. Обновите свой скрипт, чтобы включить:

 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=IMR1 

Я все равно исправлю это в вашем cron:

 # run at 9:45 AM monday thur friday 45 09 * * 1-5 /home/oracle/scripts/tblspc_usage.sh >> /home/oracle/scripts/tblspc_usage.log 2>&1 
  • Добавить в журнал: >>
  • Перенаправить stderr в файл журнала (в этом случае тот же, что и для stdout): 2> & 1
  • crontab не запускает один скрипт
  • задание cron для запуска в четверг перед вторым понедельником в месяц
  • Выполнение всех Cronjobs в среде ~ / .zshenv
  • Cron работает каждые 15 секунд
  • Как запустить команду, как если бы она вызывается из cron
  • установить cron, используя временную метку unix в centos
  • Как установить задание Cron, которое выполняется каждые три часа в течение неопределенного периода времени; с регистрацией?
  • Периодически запускать определенный скрипт во время загрузки
  • Неверный cron для полуночи?
  • Как настроить запись cron, которая работает через 00 и 30 после часа?
  • Есть ли способ поддерживать счет в кронтабе?
  • Linux и Unix - лучшая ОС в мире.