我试图用crontab执行一个shell。 cron作业执行shell但不会生成我需要的日志文件。
这是我用我的cron:10 * * * * /home/user/3nvo.sh
这是一个简单的shell,具有相同的结构:
#! /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作业启动时,shell会执行并生成日志WARNING,但不会生成if语句结尾处的日志carga_ $ FECHA.log。 我试着添加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几乎没有设置环境variables。 看起来像取决于您的环境中设置的不在您的cron环境中的variables。
您必须更改cron脚本才能将定义设置为所有未列出的variables。 对不起,这是事实。