跳到内容
观澜涉川 · 札记EN

在 Linux 上创建系统服务

· 约 1 分钟阅读

在 Linux 上,可使用 systemctl 创建系统服务。

假定服务名称为 foo。

创建服务配置

在 /etc/systemd/system/foo.service 创建服务配置。比如

[Unit]
Description= xxxx
After=network.target
[Service]
DynamicUser=yes
WorkingDirectory=xxxx
ExecStart=xxxx
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

注意:使用 DynamicUser 可让服务以非 root 运行,降低安全风险。而对于那些可能要写文件的服务,使用动态用户是无法写文件的,那么可以创建一个新的没有交互式 Shell 的用户,比如:

Terminal window
useradd -r -s /bin/false serviceuser

如果有环境变量,那么可以使用 Environment 配置,比如

[Service]
# ...
Environment="MY_VARIABLE1=value1"
Environment="MY_VARIABLE2=value2"
Environment="MY_VARIABLE3=value3"
# ...

启动服务

Terminal window
systemctl start foo

查看运行状态和日志

Terminal window
systemctl status foo -l

也可使用 journalctl 查看日志

Terminal window
journalctl -u foo.service

或者查看最后的 10 行日志

Terminal window
journalctl -u telegraf.scada.json.opcua.service -n 10 --no-pager

加入到系统启动项

Terminal window
systemctl enable foo

列出所有的系统服务

Terminal window
systemctl list-units --type=service

删除日志

如果想删除系统服务的日志,可使用

Terminal window
journalctl --unit=your-service-name.service --vacuum-size=100M

或者

Terminal window
journalctl --unit=your-service-name.service --vacuum-time=2weeks