Systemd服务配置:开启自启Jar应用全指南
配置JAVA_HOME环境变量
查看java 版本以及具体按照目录
默认安装路径为 /usr/lib/jvm/
使用命令查看是否配置了 echo $JAVA_HOME 看是否有输出
- 配置文件 vi etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
- 刷新配置
source /etc/profile
- 验证
echo $JAVA_HOME
配置java 或 其他所有服务的启动命令 start.sh脚本
#!/bin/bash
nohup java -jar demo.jar &cd /opt/nginx/sbin
./nginx
创建服务单元文件
在 /etc/systemd/system/
目录下创建服务单元文件 jar-service.service
,内容如下:
[Unit]
Description=Java Application Service
After=network.target[Service]
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
ExecStart=/opt/jar/start.sh
WorkingDirectory=/opt/jar
User=root
Restart=always
RestartSec=5s
Type=forking
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
设置脚本权限
确保启动脚本 /opt/jar/start.sh
具有可执行权限,并归属正确用户:
chmod +x /opt/jar/start.sh
chown root:root /opt/jar/start.sh
激活服务
加载服务配置并启用自启动:
systemctl daemon-reload
systemctl enable jar-service
systemctl start jar-service
验证服务状态
检查服务运行状态和日志:
systemctl status jar-service
journalctl -u jar-service -b
# 实时日志
journalctl -u jar-service -f
重启系统测试自启动功能:
reboot
常见问题排查
脚本未执行时,检查 ExecStart
路径是否为绝对路径。权限不足时,调整 User
字段或配置 sudo
权限。若服务依赖网络,确保单元文件中包含 After=network.target
。建议在 start.sh
脚本中添加日志输出功能以便调试。