(这里以Java程序为例,其他同理)
步骤 1:编写 systemd 服务文件
- 创建服务文件:
使用文本编辑器(如vim
或nano
)创建服务文件。例如,假设你的 Java 程序是myapp.jar
,可以创建一个名为myapp.service
的文件:
sudo vim /etc/systemd/system/myapp.service
- 添加服务配置:
在myapp.service
文件中添加以下内容,替换路径和参数为你实际的 Java 程序路径和配置:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/java -jar /path/to/your/myapp.jar
# 服务失败时自动重启,这里kill掉程序将不断自启,若不需要可以设置为no
Restart=always
User=root
Group=root
WorkingDirectory=/path/to/your/
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"
StandardOutput=journal
StandardError=journal
# 若需要,可将日志从默认journal输出到对应的文件[file/append]
# StandardOutput=append:/root/service.log
# StandardError=append:/root/service.log
[Install]
WantedBy=multi-user.target
说明:
-
Description
:服务的描述。 -
After
:确保服务在网络启动后运行。 -
ExecStart
:启动命令,指定 Java 路径和 jar 文件路径。 -
Restart
:设置服务失败时自动重启。 -
User
和Group
:指定运行服务的用户和组,建议使用非 root 用户。 -
WorkingDirectory
:指定工作目录(jar 文件所在目录)。 -
Environment
:设置环境变量(可选,根据你的 Java 安装路径设置Java环境变量)。 -
StandardOutput
和StandardError
:将输出和错误日志记录到 systemd 的 journal 中。
步骤 2:设置文件权限
确保服务文件具有正确权限:
sudo chmod 644 /etc/systemd/system/myapp.service
步骤 3:重新加载 systemd 配置
让 systemd 识别新创建的服务文件:
sudo systemctl daemon-reload
步骤 4:启用开机自启动
启用服务以便在系统启动时自动运行:
sudo systemctl enable myapp.service
步骤 5:启动服务
立即启动服务以测试:
sudo systemctl start myapp.service
步骤 6:检查服务状态
确认服务是否正常运行:
sudo systemctl status myapp.service
步骤 7:查看日志
如果需要调试,可以查看服务的日志:
sudo journalctl -u myapp.service