0
我写了下面的shell脚本:cron作业:如果如预期,如果shell脚本由cron作业运行/其他条件不工作
#!/bin/bash
MAIL=/usr/mail/${LOGNAME:?}
. /installations/etl_scripts/etl_job.properties
JOB_LOG_FILE_PATH=$JOB_LOG_FILE_PATH
export JOB_LOG_FILE_PATH
JOB_LOG_FILE_NAME=$JOB_LOG_FILE_NAME
export JOB_LOG_FILE_NAME
JAVA_HOME=$JAVA_HOME
export JAVA_HOME
CATALINA_HOME=$CATALINA_HOME
export CATALINA_HOME
PENTAHO_HOME=$PENTAHO_HOME
export PENTAHO_HOME
PENTAHO_JAVA_HOME=$PENTAHO_JAVA_HOME
export PENTAHO_JAVA_HOME
ETL_JOB_HOME=$ETL_JOB_HOME
export ETL_JOB_HOME
ETL_SCRIPTS_HOME=$ETL_SCRIPTS_HOME
export ETL_SCRIPTS_HOME
PATH=$PATH
export PATH
# Virre ETL transformation job execution
echo $ETL_JOB_ENABLED >> /tmp/templog.log
date +"%D %r `echo Scheduled Pentaho ETL job is starting...`" >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME
if [ $ETL_JOB_ENABLED = 'Yes' ]; then
sh $PENTAHO_HOME/kitchen.sh -file $ETL_JOB_HOME/sync_job.kjb >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME
else
echo "Pentaho ETL job is dissabled. Please enable it in etl_job.properties by setting ETL_JOB_ENABLED property to yes" >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME
fi
date +"%D %r `echo Completed`" >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME
echo ----------------------------------------------------------------- >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME
当我从控制台运行它,if/else语句工作如预期。但是,当它从计划的Cron作业中运行时,它会在if语句之前或之前的某处挂起:在if语句写入日志文件之前成功写入消息,之后没有任何反应。
任何解决方案如何解决这个问题?
是什么在'/ tmp目录/ templog.log'当您通过cron运行呢?另外,cron运行后'$ JOB_LOG_FILE_PATH/$ JOB_LOG_FILE_NAME'的内容是什么? – beny23 2011-12-22 11:40:03