跳转到内容
命令速查service-management

systemctl:检查与管理 systemd 单元

使用 systemctl 查看服务状态,并在确认影响范围后启动、停止或重启 systemd 单元。

状态
已审阅
难度
入门
风险
会改变系统
平台
linux · debian · ubuntu

systemctl 查询和控制 systemd 系统与服务管理器。它操作的对象是 Unit(单元),例如 ssh.servicemulti-user.targetfoo.timer

Terminal window
systemctl [选项] 子命令 [单元 ...]
Terminal window
unit=ssh.service
# 查看人类可读的当前状态和最近日志
systemctl status --no-pager --full "$unit"
# 获取适合脚本读取的明确属性
systemctl show --property=LoadState,ActiveState,SubState "$unit"
# 分别检查当前是否运行、是否配置为开机启用
systemctl is-active "$unit"
systemctl is-enabled "$unit"

status 的输出面向人阅读,脚本应优先使用 showis-active 并检查退出状态。

Terminal window
# 仅在已确认服务名、配置和影响范围后执行
sudo systemctl restart "$unit"
# 修改单元文件或 drop-in 后,让管理器重新读取配置
sudo systemctl daemon-reload

执行修改后再次运行 systemctl status "$unit" 和相应的业务检查。start 只影响当前运行状态;enable 主要创建开机依赖关系,两者不能互相替代。

  • stoprestartdisablemask 会改变系统状态;错误操作网络或 SSH 服务可能立即断开远程会话。
  • 管理系统单元通常需要 root;systemctl --user 管理当前用户的用户单元,不能替代系统级操作。
  • 不要在未知故障上连续重启。先保存状态和日志,再处理根因。
  • daemon-reload 只重新加载单元定义,不会自动重启服务。

该命令适用于以 systemd 为服务管理器的发行版。精简 BusyBox、Buildroot 镜像或其他 init 系统可能没有 systemctl;具体单元名称也由发行版和软件包决定。