如何将JAR交由Systemctl管理?

AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站

废话不多说,进入正题。下面开始说如何使用 systemctl 来管理一个 Java 应用程序(例如 hello.jar)

  1. 创建 Systemd 服务文件
    在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 hello.service;创建完成后,往里面写入:
powershell 复制代码
[Unit]
Description=Video Application Service
After=network.target

[Service]
# 设置 Java 路径(如果已经配置了 JAVA_HOME 环境变量,可以省略)
Environment="JAVA_HOME=/opt/jdk-17"

# 启动命令 /usr/hello.jar 为jar路径 (-XX:+UseG1GC:使用 G1 垃圾回收器;-XX:MaxMetaspaceSize=256m:设置元空间最大大小为 256MB;-Xmx:设置最大堆内存。-Xms:设置初始堆内存。)
ExecStart=/opt/jdk-17/bin/java -Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxMetaspaceSize=256m -jar /usr/hello.jar

# 工作目录(可选)
WorkingDirectory=/usr

# 用户和组(可选,根据需要修改)
User=root
Group=root

# Environment="JAVA_OPTS=-Xms512m -Xmx1024m"  # 设置 JVM 参数
# Environment="APP_CONFIG=/etc/myapp/config.properties"  # 设置应用程序配置文件路径

# 重启策略
Restart=always
RestartSec=5

# 日志配置(可选)
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=video

[Install]
WantedBy=multi-user.target

解释一下这些参数:

powershell 复制代码
Description:服务的描述信息。

After=network.target:确保服务在网络启动后运行。

ExecStart:启动服务的命令。这里使用 java -jar 运行你的 hello.jar。

WorkingDirectory:设置工作目录(可选)。

User 和 Group:指定运行服务的用户和组(可选)。如果不需要特殊权限,可以省略。

Restart=always:如果服务崩溃或意外退出,自动重启。

RestartSec=5:重启前等待 5 秒。

WantedBy=multi-user.target:指定服务在系统多用户模式下启动。
  1. 重新加载 Systemd 配置

    创建服务文件后,需要重新加载 systemd 配置以使其生效:

    powershell 复制代码
    sudo systemctl daemon-reload
  2. 启动服务

    使用以下命令启动服务:

    powershell 复制代码
      sudo systemctl start hello.service
  3. 检查服务状态

    查看服务是否正常运行:

    powershell 复制代码
    sudo systemctl status hello.service

    应该可以看到下面的输出:

powershell 复制代码
● video.service - Video Application Service
   Loaded: loaded (/etc/systemd/system/hello.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-10-09 12:00:00 UTC; 5s ago
 Main PID: 12345 (java)
    Tasks: 10 (limit: 4915)
   Memory: 100.0M
   CGroup: /system.slice/video.service
           └─12345 /opt/jdk-17/bin/java -jar /usr/hello.jar
  1. 设置开机自启动

    powershell 复制代码
     sudo systemctl enable video.service

    查看日志:sudo journalctl -u video.service

相关推荐
weixin_4723394612 分钟前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
小毛驴85039 分钟前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟3 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社24 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理4 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码4 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
YuTaoShao5 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
Dcs5 小时前
超强推理不止“大”——手把手教你部署 Mistral Small 3.2 24B 大模型
java