#!/bin/sh # set log path(default) # WORKING_DIRECOTYR=`pwd` # LOG_PATH="${WORKING_DIRECOTYR}/temp_imxtxnd.log" # $1: log filename, $2: log limit size func_check_log_file() { LOG_CHK_SIZE=1048576 if [ -n "$2" ];then LOG_CHK_SIZE=$2 fi if [ -f "$1" ];then LOG_SIZE=`ls -la $1 | awk -F' ' '{print $5}'` if [ $? -eq 0 ]; then if [ ${LOG_SIZE} -gt ${LOG_CHK_SIZE} ]; then if [ -f $1.bak ];then rm -rf $1.bak fi mv $1 $1.bak # rm -rf $1 # echo "log size is over. remove log file.[size:${LOG_SIZE},file:$1]" fi fi fi } # $1: log filename $2: log string func_log() { CUR_DATE=`date +%Y%m%d.%H%M%S` # nfs ȯ°æ¿¡¼­ ÇѰ³ÀÇ À§Ä¡¸¦ °øÀ¯ÇÏ¿© ¼­·Î ´Ù¸¥ ¼­¹ö¿¡¼­ # Á¢±Ù ÁßÀÎ °æ¿ì imxtxnd°¡ ±×³É Á¾·áµÇ¹ö¸°´Ù. if [ -n "$1" ]; then func_check_log_file "$1" 10240 echo "${CUR_DATE}[${RUN_MODE}] $2" >> "$1" else echo "${CUR_DATE}[${RUN_MODE}] $2" fi } FUNC_RESULT="" # $1: pid, $2: check process name func_is_running_process() { if [ -z "$1" ]; then func_log "" "pid is wrong." FUNC_RESULT="false" return fi PROC_NAME=`ps -p $1 -o args= | awk -F' ' '{print $1}'` func_log "" "EXEC_PID[$1],PROC_NAME[${PROC_NAME}]" if [ "${PROC_NAME}" = "$2" ]; then FUNC_RESULT="true" else FUNC_RESULT="false" fi } # $1: exit code, $2: message func_usage_exit() { if [ -n "$2" ]; then echo "$2" fi echo "imxtxnd [options]" echo "options:" echo " --[install|uninstall|continue|daemon]" echo " install: Start imxtxn as a new daemon." echo " uninstall: Start Terminate running imxtxn." echo " continue: Continuing from imxtxn already running." echo " daemon: Starts as a standalone daemon.(default)" echo " --set-home=[directory] Set the InterMax home directory." echo " (default:current direcotry)" echo " --bit=[32|64] Set 32 or 64 bit.(default:64)" echo "" exit $1 } ########################################## # option SELF_PROC_PATH="$0" if [ -n "$1" ]; then for i in $@ do echo "$i" case "$i" in --install) RUN_MODE="install" ;; --uninstall) RUN_MODE="uninstall" ;; --continue) RUN_MODE="continue" ;; --daemon) RUN_MODE="daemon" ;; --set-home=*) ENV_INTERMAX_HOME=`echo "$i" | awk -F'=' '{print $2}'` ;; --bit=*) ENV_BIT=`echo "$i" | awk -F'=' '{print $2}'` ;; --help) func_usage_exit 0 ;; *) func_usage_exit 1 "option is wrong." ;; esac done fi ########################################## ########################################## # os # linux ¸¸ Å×½ºÆ® ÇØº½ OS_NAME=`uname -s` case $OS_NAME in "HP-UX" ) ARCH=`uname -m` if [ ! "${ARCH}" = "ia64" ]; then func_log "${LOG_PATH}" "${ARCH} is not support." exit 1 fi ENV_OS_TYPE=hpia UNIX95=1 ;; "SunOS" ) ENV_OS_TYPE=sun ;; "AIX" ) ENV_OS_TYPE=aix ;; "Linux" ) ENV_OS_TYPE=linux # ENV_OS_TYPE=sun ;; * ) func_log "${LOG_PATH}" "Unkown OS Name[$OS_NAME]" exit 1 ;; esac ########################################## ########################################## # set default bit if [ "${ENV_BIT}" = "" ]; then # default 64 bit ENV_BIT=64 fi ########################################## ########################################## # set default run mode if [ "${RUN_MODE}" = "" ]; then # default 64 bit RUN_MODE="daemon" fi ########################################## ########################################## # set intermax home directory # 1. input option # 2. environment INTERMAX_HOME # 3. current directory if [ ! "${ENV_INTERMAX_HOME}" = "" ]; then INTERMAX_HOME="${ENV_INTERMAX_HOME}" export INTERMAX_HOME fi if [ "${INTERMAX_HOME}" = "" ]; then # set current direcotry base CUR_DIR=`pwd` cd .. INTERMAX_HOME=`pwd` export INTERMAX_HOME cd ${CUR_DIR} fi ########################################## ########################################## # check intermax home directory if [ ! -d ${INTERMAX_HOME}/lib/imx ]; then func_log "${LOG_PATH}" "InterMax Home Directory is worng.[${INTERMAX_HOME}]" exit 1 fi # ÀÌ°Ç ¾øÀ¸¸é »õ·Î »ý¼ºÇØ¾ß Çϳª.. ÀÏ´Ü ¿¡·¯ ó¸® if [ ! -d ${INTERMAX_HOME}/data/agent ]; then func_log "${LOG_PATH}" "InterMax Home Directory is worng.[${INTERMAX_HOME}]" exit 1 fi ########################################## ########################################## # reset log path & chagne directory to InterMax home # cd ${INTERMAX_HOME} func_log "${LOG_PATH}" "InterMax Home Directory [${INTERMAX_HOME}]" # ¿©±â ÀÌÀü¿¡´Â ·Î±×¸¦ È­¸é¿¡ Ãâ·ÂÇϵµ·Ï ÇÑ´Ù. LOG_PATH="${INTERMAX_HOME}/log/imxtxnd.log" ########################################## ########################################## # set execute process path EXEC_PROCESS="${INTERMAX_HOME}/lib/imx/imxtxn" # echo "execute process path[${EXEC_PROCESS}]" func_log "${LOG_PATH}" "execute process path[${EXEC_PROCESS}]" PROC_PID_PATH=${INTERMAX_HOME}/data/agent/imxtxn func_log "${LOG_PATH}" "PROC_PID_PATH[$PROC_PID_PATH]" ########################################## ########################################## # copy imxtxn(if not exist) if [ ! -f ${EXEC_PROCESS} ]; then cp ${INTERMAX_HOME}/lib/imx/imxtxn_${ENV_OS_TYPE}_${ENV_BIT} ${EXEC_PROCESS} if [ ! "$?" = "0" ]; then func_log "${LOG_PATH}" "${INTERMAX_HOME}/lib/imx/imxtxn_${ENV_OS_TYPE}_${ENV_BIT} is not exist." exit 3 fi fi ########################################## ########################################## # check config # test command(0 or 1) # sed -n '/ENABLE_TXN_STANDALONE=\(.*\)/p' cfg/agent/imx.prop | awk -F'=' '{if($2=="1") exit(0); else exit(1);}'; echo "$?" CMD_RESULT=`sed -n '/ENABLE_TXN_STANDALONE=\(.*\)/p' ${INTERMAX_HOME}/cfg/agent/imx.prop` if [ ! "$?" = "0" ]; then echo "check please - imx config file(imx.prop)" exit 1 fi CFG_ENABLE_TXN_STANDALONE=`echo "${CMD_RESULT}" | awk -F'=' '{print $2}'` if [ ! "${CFG_ENABLE_TXN_STANDALONE}" = "1" ]; then echo "check please - ENABLE_TXN_STANDALONE option in imx.prop(value:${CFG_ENABLE_TXN_STANDALONE})" exit 1 fi echo "ENABLE_TXN_STANDALONE config checked." ########################################## ########################################## # run process # stop mode¿¡¼­ INTERMAX_HOMEÀÌ ÇÊ¿äÇÏ¿© ¿©±â¿¡¼­ install, uninstallÀ» ó¸®ÇÑ´Ù. case ${RUN_MODE} in "install") if [ -f "${PROC_PID_PATH}" ]; then func_is_running_process \ `cat ${PROC_PID_PATH}` \ "${EXEC_PROCESS}" if [ "${FUNC_RESULT}" = "true" ]; then echo "imxtxnd - imxtxn is already running." echo "imxtxnd - Rerun imxtxnd with run mode \"continue\"." func_log "" "imxtxnd - imxtxn is already running." func_log "" "imxtxnd - 'imxtxnd --stop' or delete '${INTERMAX_HOME}/data/agent/imxtxnd.pid'" exit 1 fi fi nohup ${SELF_PROC_PATH} --daemon --set-home=${INTERMAX_HOME} 1>/dev/null 2>&1 & echo "$!" > ${INTERMAX_HOME}/data/agent/imxtxnd.pid echo "imxtxnd - installed[$!]" func_log "${LOG_PATH}" "imxtxnd - installed[$!]" exit 0 ;; "continue") TEMP_STR="" if [ -f "${INTERMAX_HOME}/data/agent/imxtxnd.pid" ]; then TEMP_PID=`cat ${INTERMAX_HOME}/data/agent/imxtxnd.pid` TEMP_STR=`ps -p ${TEMP_PID} | grep imxtxnd` fi if [ -n "${TEMP_STR}" ]; then func_log "" "${TEMP_STR}" func_log "" "imxtxnd - imxtxnd is not running." exit 1 fi # imxtxnd ½ÇÇàµÇÁö ¾ÊÀº »óÅ¿¡¼­ imxtxn¸¸ ½ÇÇà ÁßÀÎ °æ¿ì # ½ÇÇà ÁßÀÎ imxtxnÀ» ±×´ë·Î °¨½ÃÇÑ´Ù. nohup ${SELF_PROC_PATH} --daemon --set-home=${INTERMAX_HOME} 1>/dev/null 2>&1 & echo "$!" > ${INTERMAX_HOME}/data/agent/imxtxnd.pid echo "imxtxnd - continue[$!]" func_log "${LOG_PATH}" "imxtxnd - continue[$!]" exit 0 ;; "uninstall") if [ -f "${INTERMAX_HOME}/data/agent/imxtxnd.pid" ]; then rm -rf ${INTERMAX_HOME}/data/agent/imxtxnd.pid fi if [ -f "${PROC_PID_PATH}" ]; then rm -rf ${PROC_PID_PATH} func_log "${LOG_PATH}" "imxtxnd - uninstall" else func_log "${LOG_PATH}" "imxtxnd - imxtxn is not running." fi exit 0 ;; "daemon") func_log "${LOG_PATH}" "imxtxnd daemon" ;; esac ########################################## ########################################## # run imxtxn if [ ! -f "${PROC_PID_PATH}" ]; then ${EXEC_PROCESS} -D func_log "${LOG_PATH}" "execute process[$EXEC_PROCESS]" sleep 3 fi if [ ! -f "${PROC_PID_PATH}" ]; then func_log "${LOG_PATH}" "execute process has failed.[${EXEC_PROCESS}]" exit 4 fi PROC_NAME="" while [ -f "${PROC_PID_PATH}" ] do echo "PROC_PID_PATH[${PROC_PID_PATH}][$EXEC_PROCESS]" PROC_PID=`cat ${PROC_PID_PATH}` echo "PROC_PID[${PROC_PID}]" func_is_running_process \ "${PROC_PID}" \ "${EXEC_PROCESS}" if [ "${FUNC_RESULT}" = "false" ]; then func_log "${LOG_PATH}" "process is not running." # run process ${EXEC_PROCESS} -D func_log "${LOG_PATH}" "execute process[$EXEC_PROCESS]" fi sleep 3 done ########################################## func_log "${LOG_PATH}" "imxtxnd end"