systemctl 入门:先搞懂服务状态、启停、重启与开机自启,再记十条常用命令

举报
yd_283574177 发表于 2026/10/29 08:49:12 2026/10/29
【摘要】 在 Linux 服务器上管理服务,绕不开 systemctl。它是 systemd 的控制命令,主流发行版(CentOS 7+、Ubuntu 16.04+、EulerOS 等)都用它来启停服务。先记住一个核心规律:systemctl 动作 服务名,动作无非就下面几类。一、先看懂服务状态排查问题第一步永远是看状态:systemctl status nginx输出里最关键的两行:Loaded: ...

在 Linux 服务器上管理服务,绕不开 systemctl。它是 systemd 的控制命令,主流发行版(CentOS 7+、Ubuntu 16.04+、EulerOS 等)都用它来启停服务。先记住一个核心规律:systemctl 动作 服务名,动作无非就下面几类。

一、先看懂服务状态

排查问题第一步永远是看状态:

systemctl status nginx

输出里最关键的两行:

  • Loaded: loaded (.../nginx.service; enabled; ...) —— 单元文件已加载,enabled 表示已设置开机自启,disabled 表示未设置。
  • Active: active (running) —— 当前正在运行。常见的还有 inactive (dead)(已停止)、failed(启动失败)、activating(正在启动中)。

绿色圆点表示运行正常,红色表示异常。输出里还能看到主进程 PID、内存占用和最近几条日志,排查时一目了然。

二、启动、停止与重启

systemctl start nginx      # 启动服务
systemctl stop nginx       # 停止服务
systemctl restart nginx    # 重启服务:先停后启,进程号会变化
systemctl reload nginx     # 重载配置:不重启进程,只重新加载配置文件

注意 restart 和 reload 的区别:restart 会中断服务,正在处理的连接会被断开;reload 让服务重新读取配置文件而不中断服务,改完 nginx.conf 这类配置后优先用 reload。不是所有服务都支持 reload,不支持时会报错,这时再改用 restart。

如果改的是 systemd 的 unit 文件本身(比如 /usr/lib/systemd/system/xxx.service),改完要先执行:

systemctl daemon-reload   # 重新加载 systemd 单元配置

三、开机自启:enable 与 disable

服务现在运行着,不代表重启机器后还会运行——这是新手最容易踩的坑。开机自启由另一组命令控制:

systemctl enable nginx     # 设置开机自启
systemctl disable nginx    # 取消开机自启
systemctl is-enabled nginx # 查看是否已设置开机自启

enable 的本质是创建符号链接,把服务链进对应 target 的 wants 目录。配合 status 输出里的 enabled/disabled 一起看,服务的“现在”和“将来”就都清楚了。

四、十条常用命令速记

  1. systemctl status 服务名 —— 查看服务状态(含是否开机自启、最近日志)
  2. systemctl start 服务名 —— 启动服务
  3. systemctl stop 服务名 —— 停止服务
  4. systemctl restart 服务名 —— 重启服务
  5. systemctl reload 服务名 —— 重载配置,服务不中断
  6. systemctl enable 服务名 —— 设置开机自启
  7. systemctl disable 服务名 —— 取消开机自启
  8. systemctl is-enabled 服务名 —— 查询开机自启状态
  9. systemctl list-units --type=service --state=running —— 列出所有正在运行的服务
  10. journalctl -u 服务名 -n 50 —— 查看该服务最近 50 条日志,配合 status 排查

再记两条加分项:systemctl daemon-reload(改完 unit 文件后重载配置)、systemctl mask 服务名(彻底屏蔽服务,防止被依赖误启动,用 unmask 解除)。

五、实战小例子

刚在云服务器上装好 nginx,想让它立刻运行、以后开机也自动运行,三步走:

systemctl start nginx
systemctl enable nginx
systemctl status nginx

先启动、再设自启、最后确认状态。改了配置文件则这样:

nginx -t               # 先检查配置语法
systemctl reload nginx # 语法没问题再重载,不断服务

总结一句:start/stop 管现在,enable/disable 管将来,status 随时看,reload 改配置不断服。把这十条命令练熟,日常的服务管理就够用了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。