Lazy loaded image
Linux systemctl 命令完全指南
字数 2027阅读时长 6 分钟
2025-11-27
2025-11-29
type
status
date
slug
summary
tags
category
icon
password
菜单级别
Place
Verification
Owner
systemctl 是 Linux 系统中用于管理 systemd 服务的核心命令。systemd 是现代 Linux 发行版(如 Ubuntu 16.04+、CentOS 7+、Debian 8+)的默认初始化系统和服务管理器。

什么是 systemd

systemd 是 Linux 系统的初始化系统(init system),负责:
  • 启动和管理系统服务
  • 并行启动服务以加快启动速度
  • 按需启动服务
  • 管理系统状态
  • 处理日志记录

systemctl 基本语法

单元(Unit)类型:
  • service:系统服务(最常用)
  • socket:进程间通信套接字
  • target:多个单元的组合
  • device:硬件设备
  • mount:文件系统挂载点
  • timer:定时器

服务管理命令

启动服务

停止服务

重启服务

重新加载配置(不中断服务)

reload vs restart
- reload:重新加载配置文件,服务不中断
- restart:完全停止后重新启动,会短暂中断

重启或重新加载(智能选择)

服务状态查询

查看服务状态

输出示例:
状态说明:
  • loaded:服务配置已加载
  • active (running):服务正在运行
  • active (exited):一次性任务已完成
  • inactive (dead):服务未运行
  • failed:服务启动失败

检查服务是否运行

检查服务是否启用

检查服务是否失败

开机自启动管理

启用开机自启动

这会在相应的 target 目录创建符号链接。

禁用开机自启动

启用并立即启动

禁用并立即停止

服务列表查看

列出所有服务

列出所有服务(包括未激活的)

列出正在运行的服务

列出失败的服务

列出所有已安装的服务文件

输出示例:

查看服务日志

查看服务日志

查看实时日志(类似 tail -f)

查看最近的日志

查看启动日志

系统管理命令

重启系统

关机

挂起系统

休眠系统

进入救援模式

高级用法

屏蔽服务(防止启动)

屏蔽与禁用的区别:
  • disable:禁止开机自启,但可以手动启动
  • mask:完全禁止启动,手动也无法启动

编辑服务配置

这会在 /etc/systemd/system/<服务名>.d/ 下创建覆盖文件。

重新加载 systemd 配置

查看服务依赖关系

查看服务属性

创建自定义服务

服务文件位置

  • 系统服务:/lib/systemd/system//usr/lib/systemd/system/
  • 用户自定义:/etc/systemd/system/(优先级更高)

示例:创建简单服务

创建文件 /etc/systemd/system/myapp.service
配置说明:
  • [Unit]:单元描述和依赖
    • Description:服务描述
    • After:在哪些服务之后启动
  • [Service]:服务配置
    • Type:服务类型(simple, forking, oneshot 等)
    • User:运行用户
    • ExecStart:启动命令
    • Restart:重启策略
  • [Install]:安装配置
    • WantedBy:由哪个 target 管理

启用自定义服务

实战案例

案例 1:Web 服务器部署

案例 2:服务监控脚本

案例 3:自动重启失败的服务

创建 /etc/systemd/system/myapp.service
配置解释:
  • Restart=always:总是重启
  • RestartSec=5:重启前等待5秒
  • StartLimitInterval=60:60秒内
  • StartLimitBurst=3:最多重启3次

案例 4:定时任务服务

创建服务文件 /etc/systemd/system/backup.service
创建定时器文件 /etc/systemd/system/backup.timer
启用定时器:

常见问题排查

服务启动失败

服务无法停止

配置修改不生效

快速参考

任务
命令
启动服务
systemctl start <服务>
停止服务
systemctl stop <服务>
重启服务
systemctl restart <服务>
重载配置
systemctl reload <服务>
查看状态
systemctl status <服务>
启用自启
systemctl enable <服务>
禁用自启
systemctl disable <服务>
查看日志
journalctl -u <服务>
实时日志
journalctl -u <服务> -f
列出服务
systemctl list-units --type=service
重载 systemd
systemctl daemon-reload

总结

systemctl 是管理 Linux 服务的强大工具,掌握它能够:
  • 高效管理系统服务
  • 配置服务自启动
  • 监控服务状态
    上一篇
    Shell 参数扩展详解:${}、##、%%、:-、:+ 和 ? 的使用
    下一篇
    Shell 变量完全指南:从基础到高级