linux如何部署微服务启动和停止脚本?
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本文在介绍关于部署linux微服务的基础上,重点探讨了微服务启动和停止脚本具体步骤,步骤简单易上手操作,文章内容步步紧凑,希望大家根据这篇文章可以有所收获。#!/bin/bash## SCRIPT:
千家信息网最后更新 2025年12月03日linux如何部署微服务启动和停止脚本?
本文在介绍关于部署linux微服务的基础上,重点探讨了微服务启动和停止脚本具体步骤,步骤简单易上手操作,文章内容步步紧凑,希望大家根据这篇文章可以有所收获。
#!/bin/bash## SCRIPT: app_operation.sh# DATE: 2020/03/13 # DESC: 设置SDWAN应用启停# AUTHOR: Mright# VERSION: V1.0# V1.0: 创建后台应用启停脚本# *****************************BEGIN ARGUS*************************set -o pipefailsource ~/.bash_profileSERNAME=$1INPUT=$2SERNAME=${SERNAME:="NULL"}OPER=${INPUT:="stat"}SERPID="null"JARDIR="${HOME}"SCRIPTDIR="${JARDIR}"TMPPID="${JARDIR}"LOGDIR="/tmp"LOGNAME="/tmp/app_operation_$(hostname).log"APPLOGNAME="${JARDIR}/logs/${INPUT}.log"APPINFOFILE="${HOME}/version.info"CURRENTID=$(cat ${APPINFOFILE}|grep "${SERNAME}_latest"|awk -F ':' '{print $2}')# 网关应用名ZUULAPPNAME="example-sdwan-api-gateway-${CURRENTID}.jar"# SITE应用名SITEAPPNAME="example-sdwan-nw-site-${CURRENTID}.jar"# DEVICE应用名DEVICEAPPNAME="example-sdwan-nw-device-${CURRENTID}.jar"BASEPATH="${HOME}"ZUULAPPPATH="${BASEPATH}/example-sdwan-api-gateway"SITEAPPPATH="${BASEPATH}/example-sdwan-nw-site"DEVICEAPPPATH="${BASEPATH}/example-sdwan-nw-device"# *****************************END ARGUS*************************# *****************************DEFAULTS USEAGE*******************function defaults(){ echo "eg. sh app_operation.sh "}# *****************************DEFAULTS USEAGE*******************function checkInput(){ [ ! -d ${JARDIR} ]&& mkdir -p ${JARDIR} #[ ! -d ${SCRIPTDIR} ]&& mkdir -p ${SCRIPTDIR} if [ ${SERNAME} == "NULL" ];then echo "$(log_error)所操作服务名不能为空,请重新输入!" defaults exit 10 elif [ ${SERNAME} != "site" -a ${SERNAME} != "eureka" -a ${SERNAME} != "zuul" -a ${SERNAME} != "device" ];then echo "$(log_error)所输入服务名错误,请重新输入!" defaults exit 11 fi}# ******************** FUNCTION log_info BEGIN **************************function log_info(){ echo "[$(date +'%Y-%m-%d %H:%M:%S')][INFO]"}# ******************** FUNCTION log_info END ***************************# ******************** FUNCTION log_info BEGIN **************************function log_error(){ echo "[$(date +'%Y-%m-%d %H:%M:%S')][ERROR]"}# ******************** FUNCTION log_info END ***************************function getPid(){ case ${SERNAME} in "zuul") declare -a FLAG count=0 PATTERN=$(echo "${ZUULAPPNAME}"|grep -o ".*[^0-9.jar]"|sed -r "s/-$//g") SERPID=$(ps -ef|grep "${PATTERN}"|grep -v "grep"|awk '{print $2}') #SERPID=${SERPID:=110} for pro in ${SERPID};do FLAG[$count]=$pro let count++ done if [ ${#FLAG[*]} -gt 0 ];then echo ${SERPID}> ${ZUULAPPPATH}/${SERNAME}.pid else [ -f ${ZUULAPPPATH}/${SERNAME}.pid ]&&{ rm -f ${ZUULAPPPATH}/${SERNAME}.pid;} fi ;; "device") declare -a FLAG count=0 PATTERN=$(echo "${DEVICEAPPNAME}"|grep -o ".*[^0-9.jar]"|sed -r "s/-$//g") SERPID=$(ps -ef|grep "${PATTERN}"|grep -v "grep"|awk '{print $2}') #SERPID=${SERPID:=110} for pro in ${SERPID};do FLAG[$count]=$pro let count++ done if [ ${#FLAG[*]} -gt 0 ];then echo ${SERPID}> ${DEVICEAPPPATH}/${SERNAME}.pid else [ -f ${DEVICEAPPPATH}/${SERNAME}.pid ]&&{ rm -f ${DEVICEAPPPATH}/${SERNAME}.pid;} fi ;; "site") declare -a FLAG count=0 PATTERN=$(echo "${SITEAPPNAME}"|grep -o ".*[^0-9.jar]"|sed -r "s/-$//g") SERPID=$(ps -ef|grep "${PATTERN}"|grep -v "grep"|awk '{print $2}') #SERPID=${SERPID:=110} for pro in ${SERPID};do FLAG[$count]=$pro let count++ done if [ ${#FLAG[*]} -gt 0 ];then echo ${SERPID}> ${SITEAPPPATH}/${SERNAME}.pid else [ -f ${SITEAPPPATH}/${SERNAME}.pid ]&&{ rm -f ${SITEAPPPATH}/${SERNAME}.pid;} fi ;; "eureka") echo "该应用暂未记录" ;; *) defaults ;; esac }function operation(){ case ${SERNAME} in "zuul") case ${OPER} in "stat") if [ -f ${ZUULAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${ZUULAPPPATH}/${SERNAME}.pid)" else echo "$(log_info)${SERNAME} 应用未启动!" fi ;; "start") if [ -f ${ZUULAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${ZUULAPPPATH}/${SERNAME}.pid)" else cd ${ZUULAPPPATH} echo "$(log_info)${SERNAME} 应用准备启动... " nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${ZUULAPPPATH}/${ZUULAPPNAME} &>/dev/null & # 获取应用进程ID写入pid文件 sleep 10 getPid ${SERNAME} [ ! -f ${ZUULAPPPATH}/${SERNAME}.pid ]&& echo "$(log_error)${SERNAME}启动失败!"&&exit 12|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "restart") if [ -f ${ZUULAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${ZUULAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${ZUULAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} echo "$(log_info)${SERNAME}准备启动应用..." #nohup java -jar ${ZUULAPPPATH}/${ZUULAPPNAME} &>/dev/null & cd ${ZUULAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${ZUULAPPPATH}/${ZUULAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${ZUULAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." else echo "$(log_info)${SERNAME}准备启动应用..." cd ${ZUULAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${ZUULAPPPATH}/${ZUULAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${ZUULAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "stop") if [ -f ${ZUULAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${ZUULAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${ZUULAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} else echo "$(log_info)${SERNAME}已经停止..." fi ;; esac ;; "site") case ${OPER} in "stat") if [ -f ${SITEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${SITEAPPPATH}/${SERNAME}.pid)" else echo "$(log_info)${SERNAME} 应用未启动!" fi ;; "start") if [ -f ${SITEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${SITEAPPPATH}/${SERNAME}.pid)" else echo "$(log_info)${SERNAME} 应用准备启动... " cd ${SITEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${SITEAPPPATH}/${SITEAPPNAME} &>/dev/null & sleep 10 # 获取应用进程ID写入pid文件 getPid ${SERNAME} [ ! -f ${SITEAPPPATH}/${SERNAME}.pid ]&& echo "$(log_error)${SERNAME}启动失败!"&&exit 12|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "restart") if [ -f ${SITEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${SITEAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${SITEAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} echo "$(log_info)${SERNAME}准备启动应用..." cd ${SITEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${SITEAPPPATH}/${SITEAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${SITEAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." else echo "$(log_info)${SERNAME}准备启动应用..." cd ${SITEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${SITEAPPPATH}/${SITEAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${SITEAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "stop") if [ -f ${SITEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${SITEAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${SITEAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} else echo "$(log_info)${SERNAME}已经停止..." fi ;; esac ;; "device") case ${OPER} in "stat") if [ -f ${DEVICEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${DEVICEAPPPATH}/${SERNAME}.pid)" else echo "$(log_info)${SERNAME} 应用未启动!" fi ;; "start") if [ -f ${DEVICEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME} 应用已启动,进程ID为$(cat ${DEVICEAPPPATH}/${SERNAME}.pid)" else echo "$(log_info)${SERNAME} 应用准备启动... " cd ${DEVICEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${DEVICEAPPPATH}/${DEVICEAPPNAME} &>/dev/null & sleep 10 # 获取应用进程ID写入pid文件 getPid ${SERNAME} [ ! -f ${DEVICEAPPPATH}/${SERNAME}.pid ]&& echo "$(log_error)${SERNAME}启动失败!"&&exit 12|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "restart") if [ -f ${DEVICEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${DEVICEAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${DEVICEAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} echo "$(log_info)${SERNAME}准备启动应用..." cd ${DEVICEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${DEVICEAPPPATH}/${DEVICEAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${DEVICEAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." else echo "$(log_info)${SERNAME}准备启动应用..." cd ${DEVICEAPPPATH} nohup java -Xms1024m -Xmx2048m -jar -Dspring.config.location=./application-1.properties ${DEVICEAPPPATH}/${DEVICEAPPNAME} &>/dev/null & sleep 10 getPid ${SERNAME} [ ! -f ${DEVICEAPPPATH}/${SERNAME}.pid ]&&{ echo "$(log_error)${SERNAME}启动失败!"&&exit 12;}|| echo "$(log_info)${SERNAME}启动成功,进程ID为${SERPID}." fi ;; "stop") if [ -f ${DEVICEAPPPATH}/${SERNAME}.pid ];then echo "$(log_info)${SERNAME}准备停止应用..." kill $(cat ${DEVICEAPPPATH}/${SERNAME}.pid) sleep 3 [ $? -eq 0 ]&& rm -f ${DEVICEAPPPATH}/${SERNAME}.pid &&echo "$(log_info)${SERNAME}已停止。"||{ echo "$(log_error)${SERNAME}停止失败。"&&exit 13;} else echo "$(log_info)${SERNAME}已经停止..." fi ;; esac ;; "eureka") echo "" ;; *) echo "$(log_error)输入错误,请重新输入!" defaults exit 12 esac}function main(){ case $OPER in "stat") checkInput getPid ${SERNAME} operation ${SERNAME} ;; "start") checkInput getPid ${SERNAME} operation ${SERNAME} ;; "stop") checkInput getPid ${SERNAME} operation ${SERNAME} ;; "restart") checkInput getPid ${SERNAME} operation ${SERNAME} ;; *) echo "$(log_error)输入错误,请重新输入!" defaults exit 12 esac}main|tee -a ${LOGNAME} 以上就是linux部署微服务启动和停止脚本的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注行业资讯!
应用
进程
准备
成功
输入
服务
脚本
内容
文件
错误
步骤
紧凑
后台
基础
就是
文章
更多
篇文章
网关
行业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
主流数据库系统
h5传奇世界服务器
怎么往服务器里装东西
宾馆的wifi违反网络安全
服务器管理下载安装
政治纪律和网络安全
网站收到网络安全整改通知
微信个人数据库
服务器安全访问方案
网络安全法下列说法正确的是
网络安全要学linux
山东安防数显钟服务器
服务器磁盘监控
网络安全的防骗妙招
电脑网络连接服务器没有启用
天猫魔盒 服务器
erp服务器配置有哪些
服务器管理器域名解析
数据库三张表tigger
佳为收银服务器时间怎么改
汽车网络技术的运用论文
星跃信息网络技术有限公司
北方网络安全手抄报
抢票服务器
国内外项目数据库
软件开发研究生应届工资待遇
四级试卷软件开发
实时时间序列数据库
无锡市公安局网络安全
多张表格筛选重复的数据库