教程
Linux systemd 服务管理入门:开机自启与日志排查
systemd 是什么
AI 示意图·以官网当前页面为准
systemd 是当前主流 Linux 发行版(Debian、Ubuntu、CentOS/RHEL、Arch 等)的默认服务管理器。开机后由 PID 1 的 systemd 负责拉起、监控和停止各类服务(unit),你日常重启 Nginx、MySQL、Docker 容器自启等操作,底层基本都是 systemd 在管。
常用 systemctl 命令
| 场景 | 命令 |
|---|---|
| 查看服务状态 | systemctl status nginx.service |
| 启动 / 停止 / 重启 | systemctl start/stop/restart nginx |
| 开机自启 | systemctl enable nginx(enable --now 同时启动) |
| 取消自启 | systemctl disable nginx |
| 列出失败服务 | systemctl --failed |
| 重新加载配置 | systemctl daemon-reload |
注意 .service 后缀可以省略;管理的是服务名而不是可执行文件路径,命令里写的是 unit 名。
开机自启:理解 unit 文件

服务能否开机自启,取决于 unit 文件里的 [Install] 段是否写了 WantedBy=。以自建脚本服务为例:
[Unit]
Description=my custom worker
After=network-online.target
[Service]
ExecStart=/usr/local/bin/my-worker
Restart=on-failure
[Install]
WantedBy=multi-user.target
写好后放入 /etc/systemd/system/my-worker.service,执行 systemctl daemon-reload 再 systemctl enable --now my-worker,就能开机自启并立即启动。Restart=on-failure 让服务崩溃后自动拉起,这是脚本托管最常用的配置(具体取值以手册为准)。
日志排查:journalctl
systemd 把服务日志集中收进 journal,一条命令就能看全:
| 场景 | 命令 |
|---|---|
| 看某服务最近日志 | journalctl -u nginx |
| 实时跟踪 | journalctl -u nginx -f |
| 只看本次启动 | journalctl -b |
| 只看最近 50 行 | journalctl -n 50 |
| 按时间过滤 | journalctl --since "2026-10-29 10:00" |
排查思路:服务起不来先 systemctl status 看报错;日志太长就 -u + -n 50 缩小范围;journalctl -xe 能带出更多上下文(部分发行版支持 -x 输出说明)。
常见问题

- 服务启动失败:先
systemctl status看红色报错行,再用journalctl -u 服务名 -n 30看完整日志;多数是路径写错、权限不足或端口被占用。 - 改完配置不生效:unit 文件或配置修改后记得
systemctl daemon-reload,否则 systemd 用的是旧配置。 - enable 提示已存在链接:说明服务已配置自启,直接
systemctl enable --now会给出提示,先disable再enable即可。 - 日志占磁盘:journal 默认有容量上限(以发行版配置为准),可用
journalctl --vacuum-size=清理旧日志腾空间。
常见问题(FAQ)
1. 没有 systemd 的机器怎么办?
老版本或容器里可能是 SysV init,命令完全不同;先确认发行版是否使用 systemd(可执行 ps -p 1 查看),别照着 systemctl 硬敲。
2. 自定义服务怎么写最稳?
把 ExecStart 路径写绝对路径、加 Restart=on-failure、权限给对,配合 journalctl -u 排查,基本能覆盖大多数脚本托管场景(详见手册)。
3. enable 和 start 有什么区别?
start 只管现在启动;enable 管开机自动启动。两个都想要就用 enable --now。
4. Docker 容器重启后没了?
容器需要 --restart 策略或 Docker 服务的自启配合,这是另一套机制,和 systemd unit 不是一回事(可查 Docker 官方文档)。
官方资料
资料核对日期:2026-10-29
- systemctl 手册(man7.org):https://man7.org/linux/man-pages/man1/systemctl.1.html
- journalctl 手册(man7.org):https://man7.org/linux/man-pages/man1/journalctl.1.html
- systemd 官网文档:https://systemd.io/
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。