宿主机上用
#! /bin/sh
cd /opt/zlmediakit
#进程名字可修改
PROC_NAME='./MediaServer -d'
#开启服务
start() {
#    用ps获取$PROC_NAME进程数量
  let NUM=`ps -aux | grep "${PROC_NAME}" | grep -v 'grep' | grep -v 'bash' |wc -l`
#    少于1,重启进程
  if [ "${NUM}" -lt "1" ];then
	#执行脚本命令
	nohup ${PROC_NAME} >/dev/null 2>&1 &
	echo  `date "+%Y/%m/%d %H:%M:%S> "` "${PROC_NAME} 进程已经重启"
#  elif [ "${NUM}" -gt "1" ];then
#	restart
  else
	echo  `date "+%Y/%m/%d %H:%M:%S> "` "${PROC_NAME} 进程已存在"
  fi
}
#停止服务
stop() {
		arrPROC=$(ps -ef | grep "`echo ${PROC_NAME}`" | grep -v 'grep' | awk '{print $2}')
		for p in $arrPROC; do
			kill $p;
			echo `date "+%Y/%m/%d %H:%M:%S> "`"${PROC_NAME}:$p 进程已杀死"
		done
	echo `date "+%Y/%m/%d %H:%M:%S> "` "服务已停止!"
}
#检查服务是否正常
check() {
	arrspar=$(ps -ef | grep "`echo ${PROC_NAME}`" | grep -v 'grep' | grep -v 'bash' | awk '{print $2}')
	echo `date "+%Y/%m/%d %H:%M:%S> "` "目前运行的服务监控进程(${PROC_NAME}):" ${arrspar:-"无"}
}
#重启脚本
restart() {
	stop
	sleep 4
	start
}
#使用帮助
usage() {
	cat <<EOF
		守护进程使用方法:
		usage: sh $0 check|start|stop|restart
		start       启动服务
		stop        停止服务
		restart	    重启服务
		check       检查服务是否正常
EOF
		exit
}
while true;do
	case $1 in
		start)
			start
			break
			;;
		help)
			usage
			break
			;;
		stop)
			stop
			break
			;;
		restart)
			restart
			break
			;;
		check)
			check
			break
			;;
		*)
			usage
			break
			;;
	esac
	shift
done
docker用
#! /bin/sh
cd /www
#进程名字可修改
PROC_NAME='php watch -c'
#开启服务
start() {
#    用ps获取$PROC_NAME进程数量
  let NUM=`ps | grep "${PROC_NAME}" | grep -v 'grep' | grep -v 'bash' |wc -l`
#    少于1,重启进程
  if [ "${NUM}" -lt "1" ];then
	#执行脚本命令
	sleep 5
	nohup ${PROC_NAME} > ./watch.log 2>&1 &
	echo  `date "+%Y/%m/%d %H:%M:%S> "` "${PROC_NAME} 进程已经重启"
  elif [ "${NUM}" -gt "1" ];then
	restart
  else
	echo  `date "+%Y/%m/%d %H:%M:%S> "` "${PROC_NAME} 进程已存在"
  fi
}
#停止服务
stop() {
		arrPROC=$(ps | grep "`echo ${PROC_NAME}`" | grep -v 'grep' | awk '{print $1}')
		for p in $arrPROC; do
			kill $p;
			echo `date "+%Y/%m/%d %H:%M:%S> "`"${PROC_NAME}:$p 进程已杀死"
		done
	echo `date "+%Y/%m/%d %H:%M:%S> "` "服务已停止!"
}
#检查服务是否正常
check() {
	arrspar=$(ps | grep "`echo ${PROC_NAME}`" | grep -v 'grep' | grep -v 'bash' | awk '{print $1}')
	echo `date "+%Y/%m/%d %H:%M:%S> "` "目前运行的服务监控进程(${PROC_NAME}):" ${arrspar:-"无"}
}
#重启脚本
restart() {
	stop
	sleep 4
	start
}
#使用帮助
usage() {
	cat <<EOF
		守护进程使用方法:
		usage: sh $0 check|start|stop|restart
		start       启动服务
		stop        停止服务
		restart	    重启服务
		check       检查服务是否正常
EOF
		exit
}
while true;do
	case $1 in
		start)
			start
			break
			;;
		help)
			usage
			break
			;;
		stop)
			stop
			break
			;;
		restart)
			restart
			break
			;;
		check)
			check
			break
			;;
		*)
			usage
			break
			;;
	esac
	shift
done
                      
                      
                    
          
            
          
评论区