两个清单命令的区别
systemctl list-units 列出内存中已加载的单元及其运行状态,回答的是现在跑着什么;list-unit-files 列出磁盘上全部单元文件及自启状态,回答的是装了什么、开了哪些自启。服务盘点、最小化核查与故障筛查都要两者配合。适用于所有使用 systemd 的发行版。
基本信息
| 运行中服务 | systemctl list-units --type=service --state=running |
|---|---|
| 自启服务 | systemctl list-unit-files --type=service --state=enabled |
| 失败单元 | systemctl list-units --state=failed |
| 过滤方式 | --state、--type 与名称模式 |
| 注意 | 输出默认走分页器,脚本里加 --no-pager |
典型使用场景
- 等保与最小化核查:列出全部自启服务逐个确认必要性
- 故障巡检:一次性查看处于 failed 状态的单元
- 基线对比:不同主机之间比较自启服务差异
- 升级前盘点:确认系统里实际运行了哪些服务
- 排障时确认某个服务是被依赖拉起还是自启
盘点示例
盘点示例
systemctl list-units --type=service --state=running # 正在运行的服务
systemctl list-units --type=service --state=failed # 失败的服务
systemctl list-unit-files --type=service --state=enabled # 开机自启的服务
systemctl list-unit-files 'network*' # 按名称模式过滤
systemctl --type=service --state=running --no-pager | wc -l # 统计数量
systemctl list-dependencies multi-user.target | head -20 # 看目标拉了哪些单元参数怎么选
| 参数 | 作用 | 典型用途 |
|---|---|---|
| --type=service | 只看服务类单元 | 排除 socket、mount 等噪音 |
| --state=running | 只看运行中 | 盘点实际在跑的服务 |
| --state=enabled | 只看自启已开启 | 最小化与基线核查 |
| --state=failed | 只看失败 | 故障巡检 |
| --no-pager | 不分页 | 脚本与日志采集 |
list-units 只显示已加载的单元,没被拉起的单元不会出现;确认某个服务是否安装应查 list-unit-files,或用 rpm -qf 反查单元文件归属。
盘点常用组合
- 运行中服务清单:作为实际暴露面的第一手材料
- 自启服务清单:与基线清单逐条比对
- 失败单元清单:纳入每日巡检脚本
- 名称过滤清单:快速定位同类服务
- 数量统计:用数量变化发现异常新增
失败单元怎么处理
- 先用 status 看错误摘要与退出码
- 再用 journalctl -u 查具体报错内容
- 确认依赖单元是否也跟着异常
- 修完用 reset-failed 清掉失败状态
- 把反复失败的单元纳入监控告警