Files
exemone_agent_installer/installer/roles/one_agent/templates/stop.j2
2024-09-09 12:25:26 +09:00

199 lines
3.1 KiB
Django/Jinja

#!/bin/sh
#EXEM_NDM_HOME="/{{ EXEM_HOME }}/ndm"
source /{{ EXEM_HOME }}/ndm/bin/reg.env
NDM_STOP_TIMEOUT=10
Usage()
{
echo "Usage : ndm-ctl [version|start|restart|stop]"
echo ""
exit $1
}
CMD_ARGUMENT=$@
BASE_NAME=`basename $0`
case "${BASE_NAME}" in
start)
CMD_ARGUMENT="start"
;;
stop)
CMD_ARGUMENT="stop"
;;
restart)
CMD_ARGUMENT="restart"
;;
version)
CMD_ARGUMENT="version"
;;
mongomonctl)
;;
*)
echo "unknown link. please check link name[$0]."
Usage 1
;;
esac
# option process
if [ -n "${CMD_ARGUMENT}" ];
then
for i in ${CMD_ARGUMENT}
do
# echo "$i"
case "$i" in
start)
ENV_RUN_MODE="start"
RUN_LIST="start"
;;
restart)
ENV_RUN_MODE="restart"
RUN_LIST="stop start"
;;
stop)
ENV_RUN_MODE="stop"
RUN_LIST="stop"
;;
version)
ENV_RUN_MODE="version"
RUN_LIST="version"
;;
help)
Usage 0
;;
*)
Usage 1
;;
esac
done
fi
if [ ! -d "${EXEM_NDM_HOME}" ];then
echo "agent home directory is not exist.[${EXEM_NDM_HOME}]"
exit 1
fi
cd ${EXEM_NDM_HOME} || exit 1
PROCESS_NAME="exem-ndm-agent"
SVC_FILE="ndm-svc"
SVC_PID_FILE="data/svc.pid"
AGENT_PID_FILE="data/ndm-agent.pid"
echo "${PROCESS_NAME} ${ENV_RUN_MODE} --- "
for MODE in ${RUN_LIST}; do
case "${MODE}" in
version)
bin/exem-ndm-agent -v
;;
start)
if [ -f "${SVC_PID_FILE}" ];then
SVC_PID=`cat ${SVC_PID_FILE}`
PROC_COMM=`cat /proc/${SVC_PID}/comm`
if [ $? -ne 0 ];then
PROC_COMM="none"
fi
if [ "${PROC_COMM}" = "${SVC_FILE}" ];then
echo "${PROCESS_NAME} is running."
exit 1
fi
rm -rf ${SVC_PID_FILE}
fi
if [ ! -f "bin/${SVC_FILE}" ];then
echo "bin/${SVC_FILE} is not exist."
exit 2
fi
bin/${SVC_FILE} >> ${EXEM_NDM_HOME}/log/svc.log 2>&1 &
# bin/${SVC_FILE} > /dev/null 2>&1 &
SVC_PID="$!"
echo "SVC_PID[${SVC_PID}]"
echo "${SVC_PID}" > ${SVC_PID_FILE}
;;
stop)
SVC_PID=`cat ${SVC_PID_FILE}`
if [ $? -ne 0 ] || [ "${SVC_PID}" = "" ];then
echo "${PROCESS_NAME} Service is not running."
exit 1
fi
PS_SVC_PID=`ps -ef | grep -v grep | grep ${SVC_PID} | grep ${SVC_FILE}`
if [ ! "${PS_SVC_PID}" = "" ];then
kill -9 ${SVC_PID}
echo "${PROCESS_NAME} Service terminate."
else
echo "${PROCESS_NAME} Service pid is not match[${PS_SVC_PID}/${SVC_PID}]"
fi
rm -rf ${SVC_PID_FILE}
if [ -f "${AGENT_PID_FILE}" ];then
RUN_NDM_PID=`cat ${AGENT_PID_FILE} | tr '\0' '\n'`
rm -rf ${AGENT_PID_FILE}
echo -n "Waiting for ${PROCESS_NAME} process(${RUN_NDM_PID}) exit."
NUM="0"
while [ ${NUM} -lt ${NDM_STOP_TIMEOUT} ]
do
PS_NDM_PID=`ps -ef | grep -v grep | grep ${RUN_NDM_PID} | grep mongomon`
if [ "${PS_NDM_PID}" = "" ];then
break
fi
NUM=`expr ${NUM} + 1`
sleep 1
echo -n "."
done
echo ""
if [ ${NUM} -eq ${NDM_STOP_TIMEOUT} ];then
echo "${PROCESS_NAME} process shutdown wait timed out."
else
echo "${PROCESS_NAME} process terminated."
fi
else
echo "${PROCESS_NAME} process is not running."
fi
;;
*)
Usage 2
;;
esac
done