Systemd 速查表
systemd 是 Linux 系统的事实标准初始化系统和服务管理器。本速查表按功能类别整理了 systemd 的常用命令,涵盖服务启停、定时任务、日志查询、单元管理、启动性能分析和 Socket 激活等场景,每个命令都有实际使用示例。
使用场景速查
| 你要做什么 | 用哪个命令 |
| 启动服务 | systemctl start nginx |
| 查看服务状态 | systemctl status nginx |
| 查看实时日志 | journalctl -u nginx -f |
| 创建定时任务 | systemd-timer(单元) |
| 分析启动速度 | systemd-analyze blame |
| 查看 Socket 激活 | systemctl list-sockets |
服务管理
``bash
# 启动/停止/重启/重载服务
systemctl start nginx.service # 启动服务(.service 可省略)
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重新加载配置文件(不中断服务)
systemctl reload-or-restart nginx # 支持 reload 就 reload,否则 restart
# 启用/禁用服务(开机自启) systemctl enable nginx # 启用开机自启 systemctl enable --now nginx # 启用并立即启动 systemctl disable nginx # 禁用开机自启 systemctl disable --now nginx # 禁用并立即停止
# 查看服务状态 systemctl status nginx # 查看服务详细状态(含最近日志) systemctl is-active nginx # 检查是否运行中 (active/inactive) systemctl is-enabled nginx # 检查是否启用 (enabled/disabled) systemctl is-failed nginx # 检查是否失败
# mask/unmask(彻底屏蔽)
systemctl mask nginx # 屏蔽服务(无法手动启动)
systemctl unmask nginx # 取消屏蔽
`
定时器管理
`bash
# 查看定时器
systemctl list-timers # 列出所有定时器(含下次触发时间)
systemctl list-timers --all # 列出所有(含已失效的)
systemctl status myapp.timer # 查看定时器状态
# 定时器操作 systemctl start myapp.timer # 启动定时器 systemctl enable myapp.timer # 启用定时器开机自启 systemctl stop myapp.timer # 停止定时器 systemctl disable myapp.timer # 禁用定时器
# 手动触发定时器 systemctl start myapp.service # 手动触发关联服务(相当于立即执行)
# 查看定时器日志
journalctl -u myapp.timer # 查看定时器日志
journalctl -u myapp.service # 查看服务执行日志
`
日志查看
`bash
# 基本查看
journalctl # 查看所有日志(less 分页)
journalctl -n 50 # 查看最近 50 条日志
journalctl -f # 实时跟踪日志(类似 tail -f)
journalctl -e # 跳转到日志末尾
# 按服务过滤 journalctl -u nginx # 查看指定服务的日志 journalctl -u nginx -u sshd # 查看多个服务的日志 journalctl -u nginx -f # 实时跟踪指定服务日志
# 按时间过滤 journalctl --since today # 查看今天日志 journalctl --since "2026-07-15" # 从指定日期开始 journalctl --until "1 hour ago" # 到一小时前为止 journalctl --since "2026-07-15 09:00" --until "2026-07-15 18:00"
# 按优先级过滤 journalctl -p err # 只显示错误级别及以上的日志 journalctl -p warning # 警告及以上 journalctl -p err -u nginx # 组合过滤
# 输出格式 journalctl -o json # JSON 格式输出 journalctl -o verbose # 详细格式(含所有字段) journalctl -o short-monotonic # 单调时间格式
# 磁盘管理
journalctl --disk-usage # 查看日志占用磁盘空间
journalctl --vacuum-size=500M # 保留最近 500M 日志
journalctl --vacuum-time=30d # 保留最近 30 天日志
`
单元管理
`bash
# 列出单元
systemctl list-units # 列出所有活跃单元
systemctl list-units --type=service # 列出所有服务单元
systemctl list-units --type=timer # 列出所有定时器单元
systemctl list-units --type=socket # 列出所有 socket 单元
systemctl list-units --state=running # 列出运行中的单元
systemctl list-unit-files # 列出所有单元文件及其启用状态
# 单元操作 systemctl cat nginx.service # 查看单元文件内容 systemctl show nginx.service # 查看单元详细属性 systemctl list-dependencies nginx # 查看单元的依赖关系 systemctl help nginx.service # 查看单元的手册页
# 系统状态 systemctl daemon-reload # 重载单元文件(修改后需要) systemctl reset-failed nginx # 清除失败状态 systemctl is-system-running # 检查系统状态 (running/degraded)
# 编辑单元文件 systemctl edit nginx.service # 创建 drop-in 覆盖文件 systemctl edit --full nginx.service # 编辑完整单元文件
# 屏蔽/隐藏单元
systemctl mask nginx.service # 屏蔽单元(无法启动)
systemctl unmask nginx.service # 取消屏蔽
`
系统启动分析
`bash
# 启动时间分析
systemd-analyze # 查看总体启动时间
systemd-analyze time # 同上(详细版)
systemd-analyze blame # 按初始化时间排序(找出最慢的服务)
systemd-analyze critical-chain # 显示关键链(启动瓶颈)
systemd-analyze plot > boot.svg # 生成启动时间图(SVG)
# 依赖分析 systemd-analyze dot nginx.service # 生成依赖图(DOT 格式) systemd-analyze dot | dot -Tsvg > deps.svg # 生成依赖图 SVG
# security(系统安全审计) systemd-analyze security # 所有服务的安全评分 systemd-analyze security nginx.service # 指定服务安全评分
# 环境检查 systemd-analyze verify /etc/systemd/system/myapp.service # 验证单元文件 systemd-analyze condition 'ConditionPathExists=/etc/nginx' # 测试条件
# sysv-compat
systemd-analyze sysv-chkconfig # 查看 SysV 兼容服务
`
Socket 激活
`bash
# 查看 socket 单元
systemctl list-sockets # 列出所有 socket 以及关联的服务
systemctl list-units --type=socket # 列出所有 socket 单元
# Socket 操作 systemctl start myapp.socket # 启动 socket 监听 systemctl enable myapp.socket # 启用 socket 开机自启 systemctl status myapp.socket # 查看 socket 状态
# Socket 激活信息 systemctl show myapp.socket # 查看 socket 配置详情 ss -tlnp | grep myapp # 查看实际监听端口
# 查看监听状态 systemctl is-active myapp.socket # 检查 socket 是否在监听 journalctl -u myapp.socket # 查看 socket 相关日志 ``
服务管理(10)
| 命令 | 难度 | ||
|---|---|---|---|
systemctl start启动服务 | 基础 | systemctl start nginx.service | |
systemctl stop停止服务 | 基础 | systemctl stop nginx | |
systemctl restart重启服务 | 基础 | systemctl restart nginx | |
systemctl reload重新加载服务配置(不中断服务) | 中级 | systemctl reload nginx | |
systemctl enable启用服务开机自启 | 基础 | systemctl enable nginx | |
systemctl disable禁用服务开机自启 | 基础 | systemctl disable nginx | |
systemctl enable --now启用服务并立即启动 | 基础 | systemctl enable --now nginx | |
systemctl status查看服务详细状态(含最近日志) | 基础 | systemctl status nginx | |
systemctl is-active / is-enabled / is-failed检查服务运行/启用/失败状态 | 中级 | systemctl is-active nginx | |
systemctl mask / unmask屏蔽/取消屏蔽服务(彻底阻止启动) | 高级 | systemctl mask nginx |
定时器管理(4)
| 命令 | 难度 | ||
|---|---|---|---|
systemctl list-timers列出所有定时器及下次触发时间 | 基础 | systemctl list-timers --all | |
systemctl start myapp.timer启动定时器 | 基础 | systemctl start myapp.timer | |
systemctl enable myapp.timer启用定时器开机自启 | 基础 | systemctl enable myapp.timer | |
journalctl -u myapp.timer查看定时器相关日志 | 中级 | journalctl -u myapp.timer |
日志查看(8)
| 命令 | 难度 | ||
|---|---|---|---|
journalctl查看所有系统日志(less 分页) | 基础 | journalctl -n 50 | |
journalctl -f实时跟踪日志(类似 tail -f) | 基础 | journalctl -f | |
journalctl -u按服务单元过滤日志 | 基础 | journalctl -u nginx -u sshd | |
journalctl --since / --until按时间范围过滤日志 | 中级 | journalctl --since today --until "1 hour ago" | |
journalctl -p按日志优先级过滤 | 中级 | journalctl -p err -u nginx | |
journalctl -o json以 JSON 格式输出日志 | 中级 | journalctl -o json | |
journalctl --disk-usage查看日志占用磁盘空间 | 中级 | journalctl --disk-usage | |
journalctl --vacuum-size / --vacuum-time限制日志占用空间或保留时间 | 高级 | journalctl --vacuum-size=500M |
单元管理(7)
| 命令 | 难度 | ||
|---|---|---|---|
systemctl list-units列出所有活跃单元 | 基础 | systemctl list-units --type=service --state=running | |
systemctl list-unit-files列出所有单元文件及其启用状态 | 基础 | systemctl list-unit-files | |
systemctl cat查看单元文件内容 | 中级 | systemctl cat nginx.service | |
systemctl show查看单元详细属性 | 中级 | systemctl show nginx.service | |
systemctl list-dependencies查看单元依赖关系 | 中级 | systemctl list-dependencies nginx | |
systemctl daemon-reload重载单元文件(修改后必须执行) | 基础 | systemctl daemon-reload | |
systemctl edit编辑单元文件(创建 drop-in 覆盖) | 高级 | systemctl edit nginx.service |
启动分析(6)
| 命令 | 难度 | ||
|---|---|---|---|
systemd-analyze time查看系统总启动时间 | 基础 | systemd-analyze time | |
systemd-analyze blame按初始化时间排序服务(找出最慢的服务) | 中级 | systemd-analyze blame | |
systemd-analyze critical-chain显示启动关键链(瓶颈分析) | 中级 | systemd-analyze critical-chain | |
systemd-analyze plot生成启动时间图(SVG 格式) | 中级 | systemd-analyze plot > boot.svg | |
systemd-analyze security服务安全评分审计 | 高级 | systemd-analyze security nginx.service | |
systemd-analyze verify验证单元文件语法 | 高级 | systemd-analyze verify /etc/systemd/system/myapp.service |
Socket 激活(5)
| 命令 | 难度 | ||
|---|---|---|---|
systemctl list-sockets列出所有 socket 监听及关联服务 | 基础 | systemctl list-sockets | |
systemctl start myapp.socket启动 socket 监听 | 中级 | systemctl start myapp.socket | |
systemctl enable myapp.socket启用 socket 开机自启 | 中级 | systemctl enable myapp.socket | |
systemctl show myapp.socket查看 socket 配置详情 | 中级 | systemctl show myapp.socket | |
systemctl is-active myapp.socket检查 socket 是否正在监听 | 中级 | systemctl is-active myapp.socket |