【Linux】使用 systemctl 管理jar包启动
一、摘要
- 掌握Linux系统服务管理器 systemctl 的使用方法
- 使用 systemctl 启动java服务 + 设置开机自启
- 编写shell脚本,实现手动重启java服务
二、使用 systemctl 管理jar包启动
2.1 systemctl 常用命令
## 1. 查看服务状态
systemctl status 服务名.service
## 2. 启动服务
systemctl start 服务名.service
## 3. 停止服务
systemctl stop 服务名.service
## 4. 重启服务
systemctl restart 服务名.service
## 5. 重新加载 Systemd 配置(不重启服务)
systemctl daemon-reload
## 6. 禁用服务的自启动
systemctl disable 服务名.service
## 7. 启用服务的自启动
systemctl enable 服务名.service
## 8. 列出所有服务的状态(使用grep进行过滤)
systemctl list-units --type=service | grep 'java'
## 9. 查看服务的日志(需要 journalctl 命令)
journalctl -u 服务名.service
## 10. 查看服务的依赖关系
systemctl list-dependencies 服务名.service
## 11. 查看帮助文档
man systemctl
2.2 创建自启动服务
在 /etc/systemd/system/ 目录下,创建 java-demo.service:
[Unit]
Description=java-demo
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/java/java-demo
ExecStart=/usr/local/jdk/jdk11/bin/java -Dspring.profiles.active=test -jar /usr/local/java/java-demo/app-demo.jar
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
2.3 启动服务 + 设置开机自启
systemctl start java-demo.service
systemctl enable java-demo.service
2.4 手动重启服务
创建手动重启 shell 脚本
cd /usr/local/java/java-demo
vim restart.sh
#!/bin/bash
# 停止 java 服务
sudo systemctl stop java-demo
if [ $? -eq 0 ]; then
echo "正在停止已运行的 Java 程序..."
else
echo "停止 Java 程序失败!"
exit 1
fi
# 等待一段时间确保服务已停止
sleep 5
# 启动 java 服务
sudo systemctl start java-demo
if [ $? -eq 0 ]; then
echo "正在启动 Java 程序..."
else
echo "启动 Java 程序失败!"
exit 1
fi