ZBLOG

我要系统各服务的启动顺序

好的,你可以使用 systemd-analyze 配合其他命令来查看系统服务的详细启动顺序。以下是几种有效的方法:


方法1:查看所有单元的激活时间戳(最直接的启动顺序)

# 按时间顺序列出所有单元的启动时间
systemd-analyze plot | grep -E "(starting|started)" | sort -k3

或者更精确的方法:

journalctl -o short-monotonic --boot | grep "Starting.*service" | sort -k3

方法2:使用 systemd-analyze dot 生成依赖图(推荐)

# 安装 graphviz(如果未安装)
sudo apt install graphviz  # Ubuntu/Debian
sudo yum install graphviz  # RHEL/CentOS

# 生成启动顺序图
systemd-analyze dot --order --from-pattern="*.service" | dot -Tsvg > boot_order.svg

用浏览器打开 boot_order.svg 文件,可以看到所有服务的启动顺序和依赖关系。


方法3:查看当前运行的服务的启动时间线

# 显示所有服务的启动时间线(按时间排序)
systemd-analyze dump | grep -E "(Unit begins|Unit .* finished)" | sort -k2

方法4:使用 journalctl 查看启动日志

# 查看本次启动的所有服务启动记录(按时间顺序)
journalctl -b --no-pager -o short-monotonic --unit="*.service" | grep "Starting"

或者更简洁的版本:

journalctl -b --no-pager -o cat _TRANSPORT=stdout | grep "Starting" | sort

方法5:生成详细的文本报告

# 生成详细的启动分析报告
systemd-analyze critical-chain --fuzzy=yes > boot_sequence.txt

# 查看关键目标的时间线
systemd-analyze critical-chain default.target > default_target_sequence.txt

⚡ 快速查看关键服务顺序

如果只需要查看主要服务的顺序,可以尝试:

# 查看耗时最长的10个服务及其顺序
systemd-analyze blame --no-pager | head -10

# 查看关键系统服务的启动顺序
journalctl -b --no-pager -o short-monotonic \
    --unit=systemd-* \
    --unit=dbus.service \
    --unit=network*.service \
    --unit=ssh.service \
    --unit=nginx*.service \
    | grep "Starting"

📊 示例输出说明

典型的输出格式:

[    1.234567] Starting Docker Application Container Engine...
[    1.456789] Started Docker Application Container Engine.
[    2.345678] Starting Network Manager Script Dispatcher Service...
[    2.567890] Started Network Manager Script Dispatcher Service.
  • Starting: 服务开始启动的时刻
  • Started: 服务完成启动的时刻

时间戳是从内核启动开始计算的单调时间(单位:秒)。

建议使用方法2生成SVG图表,这样可以最直观地看到所有服务的完整启动顺序和依赖关系。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24177

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?