为出海而探索,为选择多想一步。CROSSBORDER GEEK / K8N.COM
K8N跨境极客CrossBorder Geek

教程

Linux systemd 服务管理入门:开机自启与日志排查

systemd 是什么

Linux 服务管理与进程调度示意图 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

最近一周热门文章

按近 7 天访问热度排序,热度积累前优先展示新文章。

当前栏目最新文章

教程 · 继续阅读同栏目的新内容

一起交流

0 条留言

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

LEAVE A NOTE

你的经验,也很重要。

无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。

更多阅读
K8N · CrossBorder Geek

给出海玩家、独立开发者、跨境博主与外贸人的选型笔记。

关于这个博客 ↗