Lab / Linux

创建 systemd 服务

以 Node Exporter 为例,整理一个 systemd service 的最小写法、启用方式和排查命令。

服务文件

systemd 适合把长期运行的程序变成系统服务。以 Node Exporter 为例,创建:

/etc/systemd/system/node_exporter.service

示例内容:

[Unit]
Description=Node Exporter
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

正式服务建议使用专门用户运行,不要随手用 root。

启用服务

重新加载 systemd:

systemctl daemon-reload

启动并设为开机自启:

systemctl enable --now node_exporter

查看状态:

systemctl status node_exporter

常用排查

看日志:

journalctl -u node_exporter -b --no-pager

检查端口:

ss -ltnp

检查服务文件是否被 systemd 正确解析:

systemctl cat node_exporter
systemd-analyze verify /etc/systemd/system/node_exporter.service

写服务文件的习惯

  • Description 写清楚服务用途。
  • AfterWants 只写真实需要的依赖。
  • ExecStart 用绝对路径。
  • Restart 按服务类型选择。
  • 修改后记得 daemon-reload

systemd 不难,难的是把服务边界写清楚。