Spaces:
Sleeping
Sleeping
| ### ================================================================================================ | |
| ### 프로그램 명 : 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 | |
| ### ================================================================================================ | |