添加 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 | 启动命令(须为绝对路径) |
Restart | always / 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-reload 再 restart。
用户级服务
无需 root 时,单元文件放在 ~/.config/systemd/user/,用 systemctl --user 管理;开机自启需执行:
bash
systemctl --user enable myapp.service
loginctl enable-linger $USER