簡(jiǎn)介
在linux中部署springboot應(yīng)用經(jīng)常需要執(zhí)行各種命令,但是頻繁的啟動(dòng)和停止應(yīng)用比較麻煩.于是就準(zhǔn)備自己寫一個(gè)簡(jiǎn)單的shell腳本來管理springboot應(yīng)用.
我自己也不是太懂如何寫shell腳本,但是通過查看shell腳本教程寫一個(gè)簡(jiǎn)單的腳本還是比較容易的,主要麻煩的地方是不會(huì)調(diào)試只能一個(gè)個(gè)試.下面就是我自己
寫的一個(gè)簡(jiǎn)單的腳本,我自己使用過后沒有什么太大問題.如果有問題,還請(qǐng)大家在留言處指出,我會(huì)加以修改.
腳本內(nèi)容
#!/bin/bash
# 使用時(shí)需要使用'chmod u+x 腳本名稱'添加執(zhí)行權(quán)限.例如:chmod u+x boot.sh
#獲取腳本名稱
SCRIPT=$0
#獲取進(jìn)程名稱,必須為完整程序名,否則可能會(huì)誤操作其他進(jìn)程
APP_NAME=$1
#獲取操作符
OPERATOR=$2
usage() {
echo "Usage: sh $SCRIPT [app_name] [start|stop|restart|status]"
exit 1
}
#判斷是否輸入了兩個(gè)參數(shù)
if [ $# != 2 ]; then
usage
fi
is_exist(){
# ps -ef 查看進(jìn)程
# | 代表管道,把上一個(gè)命令的內(nèi)容輸出到管道
# grep 過濾字符,例如 grep tomcat 代表過濾內(nèi)容中的 tomcat 字符串. -v 表示顯示不包含指定的字符串
# awk 用來處理文本 $2 代表第二欄內(nèi)容
# 獲取進(jìn)程的pid
pid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v $SCRIPT|awk '{print $2}'`
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
# 啟動(dòng)應(yīng)用
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
# 執(zhí)行命令啟動(dòng)java應(yīng)用.該命令可以根據(jù)自己的需求修改
nohup java -jar $APP_NAME > "${APP_NAME}.log" 2>&1 &
fi
}
# 停止應(yīng)用
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
# 查看當(dāng)前應(yīng)用的狀態(tài)
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
# 重新啟動(dòng)
restart(){
stop
start
}
case "$OPERATOR" in
"start")
start ;;
"stop")
stop ;;
"status")
status ;;
"restart")
restart ;;
*)
usage ;;
esac