目录
为什么要配置启动脚本?
配置脚本
一、选择一个文件夹新建一个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指令)
二、进入如下页面,按下键盘 i 键进入insert模式
三、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