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 pipefail

source ~/.bash_profile

SERNAME=$1

INPUT=$2

SERNAME=${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}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值