手寫linux上的重啟腳本,先把提綱列下
1.檢查進程是否存在
存在殺死
2.備份原來的包到指定目錄
3. 拉取新包,我這邊為了簡便,沒有從jenkins slave上拿
4.啟動命令
5.檢查是否進程起來了
#!/bin/bash
###path
JAVA=/usr/java/jdk1.8.0_211-amd64/bin/java
APP_HOME=/opt/88bugs
APPNAME=TestPlatform.jar
APP_PARAM="--spring.config.location=${APP_HOME}/application.properties"
####check wheather the port is running, if yes kill it
PID=`ps -ef | grep ${APP_HOME}/${APPNAME} | grep -v grep | awk '{print $2}'`
echo ${PID}
if test -z ${PID}
then
echo "進程沒有啟動!"
else
echo "will shutdown this process"
kill -9 ${PID}
sleep 2
fi
####backuop
mv ${APP_HOME}/${APPNAME} ${APP_HOME}/backup/${APPNAME}-date +%Y%m%d%H%M%S
####deploy the war package
cp -r /opt/${APPNAME} ${APP_HOME}/${APPNAME}
##### start the process#
nohup ${JAVA} -jar ${APP_HOME}/${APPNAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 &
afterPID=`ps -ef | grep ${APP_HOME}/${APPNAME} | grep -v grep | awk '{print $2}'`
echo ${afterPID}
sleep 10
if test -z ${afterPID}
then
echo "部署失敗"
else
echo "部署成功"
fi
若腳本希望既可以停止服務,又可以重啟服務,
那么結構屢一下
配置環境,可供其他項目更改細節使用
獲取輸入,條件如果輸入的是a,則執行a的方法;如果是b則執行b的方法體,什么都不是,即不是指定的指令,輸出提示“您輸入的指令沒有對應的方法喲”
在上面的腳本上,更改些許即可
#!/bin/bash #server JAVA=/usr/java/jdk1.8.0_211-amd64/bin/java APP_HOME=/opt/88bugs APP_NAME=TestPlatform.jar APP_PARAM="--spring.config.location=${APP_HOME}/application.properties" case $1 in start) PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}') if [ -z "$PID" ] ;then echo "start ${APP_NAME}" nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 & else echo "${APP_NAME} is running" fi ;; stop) PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}') if [ -z "$PID" ] ;then echo "${APP_NAME} is not running" else echo "stop ${APP_NAME}" kill -9 $PID fi ;; restart) PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}') if [ -z "$PID" ] ;then echo "start ${APP_NAME}" nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 & else echo "stop ${APP_NAME}" kill -9 $PID echo "start ${APP_NAME}" nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 & fi ;; backup) PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}') if [ -z "$PID" ] ;then echo "${APP_NAME} is not running,will backup files" mv ${APP_HOME}/${APP_NAME} ${APP_HOME}/backup/${APP_NAME}-$(date +%Y%m%d%H%M%S) else echo "stop ${APP_NAME}" kill -9 $PID echo "will backup files..." mv ${APP_HOME}/${APP_NAME} ${APP_HOME}/backup/${APP_NAME}-$(date +%Y%m%d%H%M%S) fi ;; logs) tail -f ${APP_HOME}/catalina.out ;; status) PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}') if [ -z "$PID" ] ;then echo "${APP_NAME} is not running" else echo "${APP_NAME} is running, pid $PID" fi ;; *) echo "您輸入的指令沒有對應的方法喲" esac