在 Linux 上使用 Systemd 运行 Java Jar 应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 Linux 上使用 Systemd 运行 Java Jar 应用程序相关的知识,希望对你有一定的参考价值。
文章目录
- 步骤 1:创建应用程序用户和组
- 步骤 2:创建系统服务
- 步骤 3:使用 systemd 启动 Java 应用程序服务
- ydic 延大示例样本
参考:
启动位于 /home/chenrise/ccue
目录下的 Jar
步骤 1:创建应用程序用户和组
首先为用户创建一个系统组。
groupadd -r appmgr
接下来,我们jvmapps
使用默认组创建一个系统用户:
useradd -r -s /bin/false -g appmgr jvmapps
步骤 2:创建系统服务
我们现在可以创建一个 systemd
服务文件来管理我们的应用程序。您需要以 root
用户身份创建此文件
vim /etc/systemd/system/ccue.service
它将具有如下内容:
[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
设置User
为之前创建的那个,并设置WorkingDirectory
为带有 jar
文件的目录。
完成更改后,为项目目录授予用户和组所有权权限:
chown -R jvmapps:appmgr /home/chenrise/ccue
步骤 3:使用 systemd 启动 Java 应用程序服务
接下来要做的是启动应用程序服务,但首先,重新加载 systemd 以便它知道添加的新应用程序。
systemctl daemon-reload
重新加载后,启动服务:
systemctl start ccue
要检查状态,请使用:
systemctl status ccue
样本输出:
[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 : 判断人员通行证失效时间定时任务结束-------------
您还可以使服务在服务器启动时启动:
systemctl enable ccue
样本输出:
[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.
要重新启动应用程序,请使用:
systemctl restart ccue
查看日志
journalctl -u ccue -f
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
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
以上是关于在 Linux 上使用 Systemd 运行 Java Jar 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Linux systemd 自启动脚本无法正常运行(求助分析方向)