Skip to content
On this page

添加 system service

以 systemd 为例,将可执行程序注册为系统服务,开机自启并由 systemctl 管理。

单元文件

/etc/systemd/system/ 下创建 myapp.service(名称自定,后缀须为 .service):

ini
[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=myuser
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/myapp
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
字段说明
Type=simple主进程即服务进程(默认)
Type=oneshot执行一次即退出,常配合 RemainAfterExit=yes
User / Group以指定用户运行,省略则用 root
WorkingDirectory进程工作目录
Environment环境变量,如 Environment=PORT=8080
ExecStart启动命令(须为绝对路径)
Restartalways / on-failure / no

加载并启用

bash
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

常用命令

bash
sudo systemctl status myapp.service
sudo systemctl restart myapp.service
sudo systemctl stop myapp.service
sudo journalctl -u myapp.service -f

修改单元文件后须执行 daemon-reloadrestart

用户级服务

无需 root 时,单元文件放在 ~/.config/systemd/user/,用 systemctl --user 管理;开机自启需执行:

bash
systemctl --user enable myapp.service
loginctl enable-linger $USER

技术文库