主页 > 手机  > 

如何将JAR交由Systemctl管理?

如何将JAR交由Systemctl管理?

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

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

创建 Systemd 服务文件 在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 hello.service;创建完成后,往里面写入: [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

解释一下这些参数:

Description:服务的描述信息。 After=network.target:确保服务在网络启动后运行。 ExecStart:启动服务的命令。这里使用 java -jar 运行你的 hello.jar。 WorkingDirectory:设置工作目录(可选)。 User 和 Group:指定运行服务的用户和组(可选)。如果不需要特殊权限,可以省略。 Restart=always:如果服务崩溃或意外退出,自动重启。 RestartSec=5:重启前等待 5 秒。 WantedBy=multi-user.target:指定服务在系统多用户模式下启动。

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

sudo systemctl daemon-reload

启动服务 使用以下命令启动服务:

sudo systemctl start hello.service

检查服务状态 查看服务是否正常运行:

sudo systemctl status hello.service

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

● 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

设置开机自启动

sudo systemctl enable video.service

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

标签:

如何将JAR交由Systemctl管理?由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“如何将JAR交由Systemctl管理?