一.项目文件目录格式准备
bin中放入springboot的jar文件
conf中放入统一的配置文件
logs日志文件
二. 编写统一管理可用service xx start 启动的脚本文件
vim /etc/init.d/Food-App ,注意后面不要带任何后缀名
编写以下命令。
#!/bin/sh
MOUDLE_NAME=app-1.0-SNAPSHOT
APP_NAME=app-1.0-SNAPSHOT.jar
APP_DIR=/opt/90249/food_security/bin
CONFIG_NAME=/opt/90249/food_security/conf/application.yml
function start()
{
cd $APP_DIR
nohup java -jar -Dspring.config.location=$CONFIG_NAME $APP_NAME > /dev/null 2>&1 &
echo "$MOUDLE_NAME start..."
}
function stop()
{
server_pid=$(ps -ef | grep jav[a] | grep "$MOUDLE_NAME" | grep -v grep |awk '{print $2}')
if [ ! -z "$server_pid" ];then
kill -9 $server_pid
echo "stop $MOUDLE_NAME by kill -9"
fi
echo "stop $MOUDLE_NAME"
}
case $1 in
start):
start
;;
stop):
stop
;;
restart):
stop
sleep 4
start
echo "$MOUDLE_NAME restart..."
;;
esac
exit 0
在 /etc/init.d目录下,并使用chomd +x Food-App来给脚本添加可执行权限
三.启动脚本
service Food-App start 启动springboot项目
service Food-App stop 关闭springboot项目
service Food-App restart 重启springboot项目
四.关于service xx start命令的补充说明
linux启动服务是用SERVICE + COMMAND,command命令本身也是一个脚本啊,比如说:service network restart;怎么能够做一个属于自己的service命令呢。
其实很简单,只要我们认识service这个命令的原理就行了。如果要知道service这个命令怎么用,你就自己man service下,在这里,我简要说下service的运行过程。举个例子来说:service network restart。
首先呢,sevice 会去寻找/etc/init.d下的network脚本,restart是network脚本里的一个参数(你可以去查看network这个脚本支持的参数),然后告诉系统运行network这个脚本,剩下的事情就交给network脚本去坐了,事实就是这么简单。
现在,你应该知道怎么编写属于自己的service命令了吧,编写一个脚本,然后把它放在/etc/init.d这个目录底下,你就可以用service +脚本名字 运行它。如果是要开机自动启动那就得用chkconfig命令了。
注意:
A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。
B、chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效
即:chkconfig --add COMMAND
chkconfig COMMAND on/off 重启后永久生效