obcon-scada / app /bin /cmsctl.bash
chanmin0723
전체 동기화: 사진 3,395장(압축), 35일 측정데이터, 실사용 코드/에셋 전부
d6dbc7d
Raw
History Blame Contribute Delete
5.56 kB
#!/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
### ================================================================================================