以下是使用 systemd 在 Ubuntu 系统中以 root 用户设置该 JAR 包自启动的步骤:

1. 创建 systemd 服务配置文件

打开终端,使用文本编辑器创建一个新的服务配置文件:

bash

sudo nano /etc/systemd/system/admin.service

在文件中输入以下内容:

ini

[Unit]
Description=admin JAR Service
After=network.target

[Service]
User=root
WorkingDirectory=/usr/local/admin
ExecStart=/usr/bin/java -jar admin.jar
SuccessExitStatus=143
Restart=always
RestartSec=5
StandardOutput=append:/usr/local/admin/logs/app.log
StandardError=append:/usr/local/admin/logs/app.log

[Install]
WantedBy=multi-user.target

说明

  • Description:对服务的简单描述。
  • After=network.target:表示在网络服务启动后再启动该服务。
  • User=root:指定以 root 用户运行服务。
  • WorkingDirectory:设置工作目录为 JAR 包所在目录。
  • ExecStart:定义启动 JAR 包的命令。
  • SuccessExitStatus:允许正常退出的状态码。
  • Restart=always:无论何种原因导致服务停止,都自动重启服务。
  • RestartSec=5:设置服务重启的间隔时间为 5 秒。
  • StandardOutput 和 StandardError:将标准输出和错误输出都追加到指定的日志文件中(需先确保 /usr/local/admin/logs 目录存在,可使用 sudo mkdir -p /usr/local/admin/logs 创建 )。
  • WantedBy=multi-user.target:在多用户模式下自动启动服务。

2. 重新加载 systemd 配置

bash

sudo systemctl daemon-reload

这一步是让 systemd 重新读取新创建或修改后的服务配置文件。

3. 启动服务

bash

sudo systemctl start admin.service

启动服务后,可以通过以下命令查看服务状态,确认是否启动成功:

bash

sudo systemctl status admin.service

如果服务启动正常,会显示类似 active (running) 的信息。

4. 设置开机自启动

bash

sudo systemctl enable admin.service

执行该命令后,系统在下次开机时会自动启动 admin.service 服务,即自动运行对应的 JAR 包。

虽然可以使用 root 用户来设置和运行服务,但从安全角度考虑,建议创建一个专门的普通用户来运行 JAR 包,以降低安全风险。如果后续需要切换用户,可以参考之前回复中创建普通用户并调整权限的相关内容 。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐