【问题标题】:Cron job: if/else conditions does not work as expected, if shell script is run from Cron jobCron 作业:如果从 Cron 作业运行 shell 脚本,则 if/else 条件无法按预期工作
【发布时间】:2011-12-22 10:50:44
【问题描述】:

我编写了以下 shell 脚本:

#!/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 语句之前将消息写入日志文件,之后什么也没有发生。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 当你通过 cron 运行 /tmp/templog.log 时有什么内容?另外,cron 运行后$JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME 的内容是什么?

标签: shell solaris crontab sh


【解决方案1】:

您可以尝试删除 kitchen.sh 文件的扩展名并添加 sh 的完整路径:

/bin/sh $PENTAHO_HOME/kitchen -file $ETL_JOB_HOME/sync_job.kjb >> $JOB_LOG_FILE_PATH/$JOB_LOG_FILE_NAME

【讨论】:

  • 谢谢。如果设置了 .sh 的完整路径(/bin/sh ..),则工作
猜你喜欢
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2015-09-20
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多