实现 Spring Boot 应用程序jar包开机自动启动
1. 创建启动脚本
为了确保Spring Boot应用程序能够顺利启动,我们需要创建一个启动脚本。该脚本将负责检查并关闭已存在的应用实例(如果存在),然后以指定的配置重新启动应用。
1.1 编写启动脚本
使用vim编辑器创建名为test01-api-startup.sh的脚本文件:
vim test01-api-startup.sh
在打开的编辑器中输入以下内容:
!/bin/bash
# 设置环境变量,防止构建过程中的误杀
BUILD_ID=DONTKILLME
# 定义日志文件路径
log_file="/data/log/test01-api-reboot.log"
# 指定活动的Spring配置文件
active_profile="prod"
# 输出重启信息
echo "Restarting SpringBoot Application" >> $log_file
# 获取正在运行的应用程序PID
pid=$(ps -ef | grep test01-api-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
# 如果PID存在,则杀死进程
if [ -n "$pid" ]; then
kill -9 $pid
echo "关闭test01-api进程:$pid" >> $log_file
fi
# 输出重启执行信息
echo "重启执行....." >> $log_file
# 以守护进程方式启动应用程序,并指定活动配置文件
nohup java -jar /data/test01-source/api/test01-api-0.0.1-SNAPSHOT.jar --spring.profiles.active=$active_profile &
# 记录启动完成信息
echo "test01-api启动完毕.....active_profile: $active_profile" >> $log_file
1.2 保存并退出编辑器
输入:wq
保存文件并退出vim编辑器。
1.3 赋予脚本执行权限
chmod 777 test01-api-startup.sh
2. 创建systemd服务文件
为了让应用能够在系统启动时自动运行,我们需要创建一个systemd服务文件。
2.1 切换到systemd服务目录
cd /etc/systemd/system/
2.2 创建服务文件
使用vim编辑器创建名为test01-api-reboot.service的服务文件:
vim test01-api-reboot.service
2.3 编写服务文件内容
在打开的编辑器中输入以下内容:
[Unit]
Description=Manage test01-api
After=network.target
[Service]
Type=forking
ExecStart=/data/bin/test01-api-startup.sh
[Install]
WantedBy=multi-user.target
2.4 保存并退出编辑器
输入:wq
保存文件并退出vim编辑器。
2.5 赋予服务文件执行权限
chmod 755 /etc/systemd/system/test01-api-reboot.service
2.6 启用服务
使服务在系统启动时自动启动:
systemctl enable test01-api-reboot
2.7 启动服务
手动启动服务以立即运行:
systemctl start test01-api-reboot
2.8 检查服务状态
查看服务当前的状态以确认其是否正确运行:
systemctl status test01-api-reboot
3. 查看日志
3.1 脚本日志
tail -200f /data/log/test01-api-reboot.log
3.2 应用程序日志
tail -200f /data/log/api/log.log
重启电脑,自启动成功,查看日志正常,完成配置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-01-14 CentOS7使用tar方式安装Containerd,配置文件介绍
2022-01-14 安装 CRI 客户端 crictl
2022-01-14 CentOS7使用yum方式安装Containerd
2022-01-14 一文搞懂容器运行时 Containerd
2022-01-14 图解 Kubernetes Ingress
2022-01-14 图解 Kubernetes Service
2022-01-14 数学教授为什么仍然使用粉笔