在 Linux 上创建系统服务

2024-01-17#Linux#systemctl

在 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 的用户,比如:

useradd -r -s /bin/false serviceuser

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

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

启动服务 🔗

systemctl start foo

查看运行状态和日志 🔗

systemctl status foo -l

也可使用 journalctl 查看日志

journalctl -u foo.service

或者查看最后的 10 行日志

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

加入到系统启动项 🔗

systemctl enable foo

列出所有的系统服务 🔗

systemctl list-units --type=service

删除日志 🔗

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

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

或者

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

加载中...