问题:

我的系统需要很长时间才能启动。
如何找出哪些服务启动耗时最长?
在系统启动时,如何查看各个服务的启动时间?

欢迎来到之路教程(on itroad-com)

回答 :

systemd-analyze 命令可用于查找有关每个服务启动所需时间的信息。

systemd-analyze time 可以提供有关系统启动所需时间的整体信息。
这是一个命令,它清楚地显示了内核、initrd 和用户空间在启动时所花费的时间。

# systemd-analyze time
Startup finished in 1.267s (kernel) + 6.798s (initrd) + 1min 2.139s (userspace) = 1min 10.205s

要了解每个单元的启动时间,请运行 systemd-analyze blame 。

# systemd-analyze blame
         24.728s dev-mapper-centosx2droot.device
         15.135s kdump.service
         14.670s plymouth-quit-wait.service
         14.210s firewalld.service
          9.835s accounts-daemon.service
          7.383s ModemManager.service
          7.259s libvirtd.service
          7.257s systemd-logind.service
          7.177s ksm.service
          7.081s gssproxy.service
          7.067s avahi-daemon.service
          7.062s rsyslog.service
          7.039s abrt-ccpp.service

如我们所见,输出根据每个单元所用的时间进行排序,我们可以轻松找出哪个服务在启动过程中花费的时间更长,并可以深入dig以分析问题。

在某些步骤中,直到单元的所有相关性都得到满足后,才能继续进行引导。
要查看这些关键点的单元,请运行 systemd-analyze critical-chain 。

# systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
graphical.target @1min 2.102s
└─multi-user.target @1min 2.102s
  └─abrt-vmcore.service @1min 1.228s +872ms
    └─kdump.service @46.090s +15.135s
      └─remote-fs.target @46.086s
        └─remote-fs-pre.target @46.083s
          └─iscsi-shutdown.service @45.951s +99ms
            └─network.target @45.944s
              └─network.service @44.959s +975ms
                └─NetworkManager.service @38.653s +689ms
                  └─firewalld.service @24.439s +14.210s
                    └─basic.target @23.850s
                      └─sockets.target @23.849s
                        └─cups.socket @23.847s
                          └─sysinit.target @23.618s
                            └─systemd-update-utmp.service @23.603s +13ms
                              └─auditd.service @22.959s +643ms
                                └─systemd-tmpfiles-setup.service @22.726s +230ms
                                  └─rhel-import-state.service @22.431s +294ms
                                    └─local-fs.target @22.428s
                                      └─boot.mount @19.675s +2.126s
                                        └─dev-disk-byx2duuid-7de2053cx2d44d7x2d4f33x2db522x2d81dee2f6b69b.device @19.652s

可以绘制 SVG 图形图像,其中包含有关系统服务启动时间的详细信息,突出显示它们在初始化上花费的时间。
确保我们已启用图形显示模式或者启用 x-windows 以查看绘图。

# systemd-analyze plot > plot.svg
# eog plot.svg
CentOS/RHEL 7:systemd-analyze 命令查找服务的启动时间
日期:2020-09-17 00:12:07 来源:oir作者:oir