Я пытаюсь запустить оболочку с помощью crontab. Задание cron выполняет оболочку, но не создает нужный мне файл журнала.
Вот что я использую для своего cron: 10 * * * * /home/user/3nvo.sh
Это простая оболочка с такой же структурой:
#! /bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/MCMMX
export OH=$ORACLE_HOME
export SHLIB_PATH=$ORACLE_HOME/lib:/usr/lib/Motif1.2
export ORACLE_SID=MCMMX
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export TMPDIR=/tmp
export DESA_HOME=/home/manager
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
export FECHA=`date +"%d-%m-20%y_%H:%M:%S"`
PATH=$PATH:.:/opt/bin:$ORACLE_HOME/bin:/bin:/usr/bin:/usr/ccs/bin:/usr/sbin:/opt/perl:/opt/p erl/bin:/usr/kerberos/bin
ERROR="error_carga_nextone_$FECHA.log"
WARNING="warning_$FECHA.log"
DUMMY="dummy.txt"
if [ -r $DUMMY ]; then
echo "you have an instance open" >> $WARNING
else
echo "rest of the shell script"
fi >& carga_$FECHA.log
Когда задание cron запускается, оболочка выполняет, и это генерирует журнал WARNING, но не генерирует журнал carga_ $ FECHA.log, который находится в конце оператора if. Я попытался добавить 2 >> carga_ $ FECHA.log, и он отправил мне электронное письмо с содержимым файла журнала, а затем это:
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/home/ecabanas>
X-Cron-Env: <LOGNAME=ecabanas>
X-Cron-Env: <USER=ecabanas>
Помните, что cron запускается почти без установленных переменных среды, за исключением нескольких. Похоже, вы зависите от переменных, установленных в вашей среде, которые НЕ находятся в вашей среде cron.
Вы должны изменить сценарий cron, чтобы задать определения для всех используемых вами переменных, кроме пяти из перечисленных. Извините, это так.