感觉都很久没写东西了.今天记录以下基于
Centos7
,把Java
项目设置成服务,并开机自启动
- 编写项目启动脚本
#!/bin/bash
APP_NAME=springboot-test
APP_PATH=/data/springboot/test/
export JAVA_HOME=/data/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
usage(){
echo "请输入以下内容 [start|stop]"
exit 1
}
stop(){
echo "准备关闭当前项目已存在进程"
tpid=`ps -ef|grep ${APP_NAME}.jar|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo "关闭进程: ${tpid}"
kill -9 $tpid
echo "关闭完成"
else
echo '项目未运行'
fi
}
start(){
stop
echo "开始启动"
rm -f ${APP_PATH}${APP_NAME}.pid
nohup ${JRE_HOME}/bin/java -jar ${APP_PATH}${APP_NAME}.jar &
echo $! > ${APP_PATH}${APP_NAME}.pid
}
case $1 in
"start")
start
;;
"stop")
stop
;;
*)
usage
;;
esac
exit 0
- 脚本授权
chmod +x /data/springboot/test/starter.sh
- 设置自定义服务
vim /lib/systemd/system/springboot-test.service
- 编写内容
[Unit]
Description=springboot-test-server
After=network-online.target docker.socket firewalld.service docker.service time-set.target
Wants=network-online.target docker.service
Requires=docker.socket
[Service]
Type=forking
ExecStart=/data/springboot/test/starter.sh start
ExecRestart=/data/springboot/test/starter.sh start
ExecStop=/data/springboot/test/starter.sh stop
[Install]
WantedBy=multi-user.target
- 重新加载配置
systemctl daemon-reload
- 设置服务自启动
systemctl enable springboot-test.service
好了到这我们Java项目就被设置成服务了,并开机自启动了
- 常用服务命令
# 开机启动
systemctl enable springboot-test.service
# 启动
systemctl start springboot-test.service
# 关闭
systemctl stop springboot-test.service
# 重启
systemctl restart springboot-test.service
# 查看状态
systemctl status springboot-test.service
# 重新加载配置
systemctl daemon-reload
- 查看所有的开机启动项
systemctl list-unit-files|grep enabled