目录

为什么要配置启动脚本?

配置脚本

一、选择一个文件夹新建一个XXX.sh文件(xxx可以命名为项目名称,新建.sh .conf 等文件用到的是vi指令)

二、进入如下页面,按下键盘 i 键进入insert模式

三、insert如下配置(只需修改APP_NAME内容为自己想要启动的jar包)

四、脚本代码解释:

linux下脚本测试

1、启动测试

2、查看状态

3、停止测试

4、重启测试


为什么要配置启动脚本?

一般情况下我们在linux下启动我们项目都是直接java -jar 启动jar包或者war包,但是其存在很多弊端,比如说不能后台一直启动项目,想返回至别的目录点击control +c 直接结束进程了,还有就是每次启动必须输入一大串包名。所以这里我们就配置一个脚本,让项目启动这个脚本使其实现启动、停止、重启项目的功能,提高我们项目部署的效率

配置脚本

一、选择一个文件夹新建一个XXX.sh文件(xxx可以命名为项目名称,新建.sh .conf 等文件用到的是vi指令)

重启SpringBoard 重启springboot项目_重启

二、进入如下页面,按下键盘 i 键进入insert模式

重启SpringBoard 重启springboot项目_服务器_02

三、insert如下配置(只需修改APP_NAME内容为自己想要启动的jar包)

(插入之后需要给予改脚本权限  用 chmod +x  xxx.sh命令 不然会提示没有权限 )

#!/bin/bash
#执行的程序
APP_NAME=test-0.0.1-SNAPSHOT.jar

APP_DIR=`pwd`
 
#使用说明,用来提示输入参数
usage() {
 echo "Usage: sh sms.sh [start|stop|restart|status]"
 exit 1
}
 
#检查程序是否在运行
is_exist(){
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `

 echo "ps number is: ${pid}"
 #如果不存在返回1,存在返回0 
 if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}
 
#启动方法
start(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is already running. pid=${pid} ."
 else
 nohup java -jar $APP_DIR/$APP_NAME > $APP_DIR/log.out 2>&1 &
 #nohup java -jar $APP_DIR/$APP_NAME
 echo "${APP_NAME} start success"
 fi
}
 
#停止方法
stop(){
 is_exist
 if [ $? -eq "0" ]; then
 kill -9 $pid
 else
 echo "${APP_NAME} is not running"
 fi 
}
 
#输出运行状态
status(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is running. Pid is ${pid}"
 else
 echo "${APP_NAME} is NOT running."
 fi
}
 
#重启
restart(){
 stop
 start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
 "start")
 start
 ;;
 "stop")
 stop
 ;;
 "status")
 status
 ;;
 "restart")
 restart
 ;;
 *)
 usage
 ;;
esac

 四、脚本代码解释:

 APP_NAME:表示你要执行的jar包

APP_DIR:jar包或者程序所在的路径,可以写死,或者使用pwd命令获取。使用pwd命令要注意一定要加上``这个引号。

使用命令ps -ef 来查看进程并获取进程编号

启动:先调用第二步的is_exist看进程号是否存在,存在就输出已经在运行,不存在的话使用nohup进行启动并输出到sms.txt文件下

 is_exist(){
# 获取进程编号,并将进程编号赋值给pid变量
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#输出进程编号
 echo "ps number is: ${pid}"
 #如果不存在返回1,存在返回0 
 if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}

停止:同样先调用is_exist方法看程序是否在运行,运行使用命令杀死进程,没有运行输出序没有在运行。

#停止方法
stop(){
#调用is_exist看进程号是否存在
 is_exist
 if [ $? -eq "0" ]; then
 #存在 使用命令杀掉此程序的进程,pid在is_exist已经获取
 kill -9 $pid
 else
 #不存在 输出程序没有在运行
 echo "${APP_NAME} is not running"
 fi 
}

重启先调用st停止方法,再调用启动方法。

#重启
restart(){
 stop
 start
}
输入方法:根据输入参数,选择执行对应方法,不输入则执行使用说明

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
 "start")
 start
 ;;
 "stop")
 stop
 ;;
 "status")
 status
 ;;
 "restart")
 restart
 ;;
 *)
 usage
 ;;
esac

linux下脚本测试

1、启动测试

重启SpringBoard 重启springboot项目_重启SpringBoard_03

2、查看状态

3、停止测试

重启SpringBoard 重启springboot项目_服务器_04

4、重启测试

重启SpringBoard 重启springboot项目_重启SpringBoard_05