在linux注册服务并开机启动springboot程序
1.本文说明
配置springboot的jar包开机自启动,centos和ubuntu都可以使用
本文以/home/java/mes.jar包启动方式为例
2.启停脚本
(1)启动(重启)脚本
进入/data/目录
cd /data/
vim mes_start.sh
此处启动和重启都使用了这个脚本,因为其中包含了此进程存在就先杀掉的处理
日志文件保存在 /data/mes_nohup.log
#!/bin/sh
# jar包路径
APP1_NAME=/home/java/mes.jar
# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi
# 启动项目jar包,java命令写成了绝对路径,因为系统启动的时候是不识别环境变量的
# 日志文件也写成了绝对路径,不然日志会输出在init.d目录
nohup java -jar $APP1_NAME --spring.profiles.active=prd > /data/mes_nohup.log 2>&1 &
(2)停止脚本(kill)
进入/data/目录
cd /data/
vim mes_stop.sh
直接暴力杀掉进程,有更优雅的方式大家可以自行解决
#!/bin/sh
# jar包路径
APP1_NAME=/home/java/mes.jar
# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi
(3) 授权
chmod -R 777 mes_start.sh
chmod -R 777 mes_stop.sh
3.注册服务
(1)先切换到系统目录cd /etc/systemd/system
(2)注册服务脚本vim
mes.service
内容参考:注意启动脚本的目录位置/data/,依赖项如果不需要mysql,就改成After=NetworkManager.service
[Unit]
Description=data server
# 依赖项,在这些程序之后启动
After=NetworkManager.service mysqld.service
[Service]
Type=forking
# 配置启动脚本
ExecStart=/data/start.sh
# 配置重启脚本
ExecReload=/data/start.sh
# 配置停止脚本
ExecStop=/data/stop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
(3)授权service
chmod -R 777 mes.service
4. 配置开机启动
(1)配置开机启动
sudo systemctl enable
mes.service
(2)重新加载配置
sudo systemctl daemon-reload
(3)查看启动配置(到这里就可以重启测试了)
sudo systemctl list-unit-files | grep
mes
(4)使用systemctl启动服务,进行测试,如果失败failure,则查看下配置路径
sudo systemctl start
mes.service
(5)使用systemctl停止服务
sudo systemctl stop
mes.servic