Spaces:
Sleeping
Sleeping
File size: 5,563 Bytes
d6dbc7d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | #!/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
### ================================================================================================
|