• 在 Linux 上使用 Systemd 运行 Java Jar 应用程序



    参考:

    1. https://computingforgeeks.com/how-to-run-java-jar-application-with-systemd-on-linux/
    2. ydic

    启动位于 /home/chenrise/ccue 目录下的 Jar

    步骤 1:创建应用程序用户和组

    首先为用户创建一个系统组。

    groupadd -r appmgr
    
    • 1

    接下来,我们jvmapps 使用默认组创建一个系统用户:

    useradd -r -s /bin/false -g appmgr jvmapps
    
    • 1

    步骤 2:创建系统服务

    我们现在可以创建一个 systemd 服务文件来管理我们的应用程序。您需要以 root 用户身份创建此文件

    vim /etc/systemd/system/ccue.service
    
    • 1

    它将具有如下内容:

    [Unit]
    Description=Manage Java service
    
    [Service]
    WorkingDirectory=/home/chenrise/ccue
    ExecStart=/usr/java/jdk-14.0.2/bin/java -Dloader.path=./lib -jar ccue-server.jar --spring.profiles.active=stage
    User=jvmapps
    Type=simple
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    设置User为之前创建的那个,并设置WorkingDirectory为带有 jar 文件的目录。

    完成更改后,为项目目录授予用户和组所有权权限:

    chown -R jvmapps:appmgr /home/chenrise/ccue
    
    • 1

    步骤 3:使用 systemd 启动 Java 应用程序服务

    接下来要做的是启动应用程序服务,但首先,重新加载 systemd 以便它知道添加的新应用程序。

    systemctl daemon-reload
    
    • 1

    重新加载后,启动服务:

    systemctl start ccue
    
    • 1

    要检查状态,请使用:

    systemctl status ccue
    
    • 1

    样本输出:

    [root@node-130 ccue]# systemctl status ccue
    ● ccue.service - Manage Java service
       Loaded: loaded (/etc/systemd/system/ccue.service; disabled; vendor preset: disabled)
       Active: active (running) since 三 2022-11-02 15:59:54 CST; 22min ago
     Main PID: 8873 (java)
        Tasks: 236
       Memory: 763.9M
       CGroup: /system.slice/ccue.service
               └─8873 /usr/java/jdk-14.0.2/bin/java -Dloader.path=./lib -jar ccue-server.jar --spring.profiles.active=stage
    
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.031 INFO  8873 [eduler_Worker-7] c.c.boot.visitors.task.VisitorTask       : 修改访客状态定时任务结束-------------
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.058 INFO  8873 [eduler_Worker-8] c.c.boot.ccudata.task.CcuDataTask        : 同步长大临时访客数据定时任务开始-------------
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.058 INFO  8873 [eduler_Worker-8] c.c.b.f.d.DynamicDataSourceContextHolder : 切换到SLAVE数据源
    11月 02 16:22:00 node-130 java[8873]: false
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.064 INFO  8873 [eduler_Worker-8] c.c.boot.ccudata.task.CcuDataTask        : 无效的身份证号:222313199410144241
    11月 02 16:22:00 node-130 java[8873]: true
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.064 INFO  8873 [eduler_Worker-8] c.c.boot.ccudata.task.CcuDataTask        : 结束时间大于当前时间:跳过当前数据
    11月 02 16:22:00 node-130 java[8873]: false
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.072 INFO  8873 [eduler_Worker-8] c.c.boot.ccudata.task.CcuDataTask        : 同步长大临时访客数据定时任务结束-------------
    11月 02 16:22:00 node-130 java[8873]: 16:22:00.089 INFO  8873 [schedule-pool-6] c.chenrise.boot.ticket.task.TicketTask   : 判断人员通行证失效时间定时任务结束-------------
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    您还可以使服务在服务器启动时启动:

    systemctl enable ccue
    
    • 1

    样本输出:

    [root@node-130 ccue]# systemctl enable ccue
    Created symlink from /etc/systemd/system/multi-user.target.wants/ccue.service to /etc/systemd/system/ccue.service.
    
    
    • 1
    • 2
    • 3

    要重新启动应用程序,请使用:

    systemctl restart ccue
    
    • 1

    查看日志

    journalctl -u ccue -f
    
    • 1

    ydic 延大示例样本

    ydic.service

    [Unit]
    Description=ydic
    Requires=docker.service
    After=docker.service
    
    [Service]
    User=root
    ExecStart=/data/ydic.sh
    SuccessExitStatus=143
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    ydic.sh

    #!/bin/bash
    export JAVA_HOME=/data/jdk-14.0.2+12
    export PATH=$PATH:$JAVA_HOME/bin
    java -Djava.security.egd=file:/test/./urandom -Dspring.profiles.active=prod -jar /data/ydic-server.jar
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    VBA处理数据与Python Pandas处理数据案例比较分析
    easypoi 导出Excel 使用总结
    [SpringBoot笔记] SpringBoot-01-快速入门案例
    Rust常用特型之ToOwned特型
    numpy函数总结
    Java synchronized那点事
    【Day 11 协同过滤算法与Apriori算法】
    单例模式,适用于对象唯一的情景(设计模式与开发实践 P4)
    2024年华为OD机试真题- 手机App防沉迷系统-(C++)-OD统一考试(C卷D卷)
    【前端精进之路】JS篇:第1期 数据类型总结
  • 原文地址:https://blog.csdn.net/zbx931197485/article/details/127653765