#!/usr/bin/env bash ### ================================================================================================ ### 프로그램 명 : cmsctl.bash, Version 0.00.010 ### 프로그램 설명 : OBCon CMS를 관리 한다. ### 작성자 : 산사랑 (pnuskgh@gmail.com, 010-5034-3931) ### 작성일 : 2018.10.19 ~ 2019.10.30 ### ----[History 관리]------------------------------------------------------------------------------ ### 수정자 : ### 수정일 : ### 수정 내용 : ### --- [Copyright] -------------------------------------------------------------------------------- ### Copyright (c) 1995~2019 pnuskgh, 오픈소스 비즈니스 컨설팅 ### All rights reserved. ### ================================================================================================ ### ------------------------------------------------------------------------------------------------ ### 초기 환경을 설정 합니다. ### ------------------------------------------------------------------------------------------------ export LANG=ko_KR.utf8 export TZ=Asia/Seoul #--- NVM 사용에 따른 설정을 한다. export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" HOME_CMS="/work/appl/obcon" NODE=`which node` # NODE='/root/.nvm/versions/node/v12.13.1/bin/node' PROC_NAME="OBCon CMS Service" PROC_STR="${NODE} ${HOME_CMS}/bin/cms.js --conf config_cms_override.js" JOB_LOG="${HOME_CMS}/logs/watchdog_cms.log" TIMESTAMP=`date +%Y%m%d_%H%M%S` ### ------------------------------------------------------------------------------------------------ ### 사용법을 표시 합니다. ### ------------------------------------------------------------------------------------------------ funcUsing() { echo "Using : cmdctl.bash COMMAND [OPTIONS]" echo " COMMAND : help, start, restart, stop, status, watchdog" echo " " exit 2 } ### ------------------------------------------------------------------------------------------------ ### OBCon CMS Service 관리 함수 ### ------------------------------------------------------------------------------------------------ funcStart() { local OPT=$1 PROC_PID=`/bin/ps -ef | /bin/grep -v /bin/grep | /bin/grep "${PROC_STR}" | /bin/awk '{print $2}'` if [[ "${PROC_PID}" == "" ]]; then cd ${HOME_CMS} if [[ "${OPT}" == "systemctl" ]]; then ${NODE} /work/appl/obcon/bin/cms.js --conf config_cms_override.js > /dev/null 2>&1 & else /bin/nohup ${NODE} /work/appl/obcon/bin/cms.js --conf config_cms_override.js > /dev/null 2>&1 & fi /bin/echo "${PROC_NAME}를 시작 하였습니다. " else /bin/echo "${PROC_NAME}가 이미 살아 있습니다." fi /bin/sleep 1 funcStatus } funcStop() { # /bin/curl --silent http://localhost/modbusapi/process --data '{"cmd":"q"}' --header "Content-Type:application/json;characterset=utf-8" --output /dev/null #--- Process가 죽지 않은 경우 강제로 죽인다. # /bin/sleep 1 PROC_PID=`/bin/ps -ef | /bin/grep -v /bin/grep | /bin/grep "${PROC_STR}" | /bin/awk '{print $2}'` if [[ "${PROC_PID}" == "" ]]; then /bin/echo "${PROC_NAME}가 종료 되었습니다." else /bin/echo "${PROC_NAME}를 강제로 종료 합니다." for PID in ${PROC_PID}; do /bin/kill -9 ${PID} > /dev/null 2>&1 done fi } funcRestart() { funcStop sleep 0.5 funcStart } #--- 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일 (0. 일요일, 6. 토요일) 명령어 #--- * * * * * su - -c '/work/appl/obcon/cmsctl.bash watchdog' funcWatchdog() { PROC_PID=`/bin/ps -ef | /bin/grep -v /bin/grep | /bin/grep "${PROC_STR}" | /bin/awk '{print $2}'` if [[ "${PROC_PID}" == "" ]]; then /bin/echo "OBCon CMS server 기동 : ${TIMESTAMP}" >> ${JOB_LOG} funcStart fi } funcStatus() { /bin/date /bin/ps -ef | /bin/grep -v /bin/grep | /bin/grep "${PROC_STR}" /usr/bin/echo ' ' } ### ------------------------------------------------------------------------------------------------ ### Command Line Argument를 확인 합니다. ### ------------------------------------------------------------------------------------------------ if [[ $# == 1 ]]; then COMMAND=$1 else funcUsing fi ### ------------------------------------------------------------------------------------------------ ### Main process ### ------------------------------------------------------------------------------------------------ case ${COMMAND} in help) funcUsing ;; start) funcStart ;; start_systemctl) funcStart systemctl ;; restart) funcRestart ;; stop) funcStop ;; status) funcStatus ;; watchdog) funcWatchdog /usr/bin/sleep 10 funcWatchdog /usr/bin/sleep 10 funcWatchdog /usr/bin/sleep 10 funcWatchdog /usr/bin/sleep 10 funcWatchdog /usr/bin/sleep 10 funcWatchdog ;; *) funcUsing ;; esac echo " " exit 0 ### ================================================================================================