您是否在使用 systemd 系统和服务管理器,并且您的 Linux 系统需要较长时间才能启动,或者您希望查看系统启动性能的报告? 如果是的话,你已经登陆了正确的地方。

在本文中,我们将向您展示如何使用systemd-analyze来分析 Linux 系统启动性能统计信息, systemd是 systemd 中用于系统管理的众多实用程序之一。

另请参阅 : 如何在远程 Linux 服务器上控制系统服务

要获得系统启动时间的概述,我们可以运行systemd-analyze命令而不带任何参数,如下所示。 它将列出每个服务启动需要多长时间的信息,其中包括启动时内核,initrd 和用户空间占用的时间。

  1. # systemd-analyze
  2. Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s

如果要查看所有正在运行的单位的列表,按其初始化时间排序(最高时间位于最前面),blame 子命令用于此目的。 运行后面的命令后,使用[Enter]查看列表中的更多服务,然后q退出。

  1. # systemd-analyze blame
找出每个单位的时间开始
  1. 16.159s mariadb.service
  2. 12.178s libvirtd.service
  3. 10.298s tuned.service
  4. 9.836s postfix.service
  5. 8.704s lsws.service
  6. 7.352s lscpd.service
  7. 4.988s [email protected]
  8. 4.779s NetworkManager-wait-online.service
  9. 4.577s lvm2-monitor.service
  10. 4.439s ModemManager.service
  11. 4.413s polkit.service
  12. 4.280s dev-sda1.device
  13. 4.225s systemd-udev-settle.service
  14. 3.957s firewalld.service
  15. 3.227s rhel-dmesg.service
  16. 3.221s abrt-ccpp.service
  17. 3.142s rsyslog.service
  18. 3.053s avahi-daemon.service
  19. 3.042s pure-ftpd.service
  20. 2.249s gssproxy.service
  21. 2.212s NetworkManager.service
  22. 1.889s proc-fs-nfsd.mount
  23. 1.780s systemd-tmpfiles-setup-dev.service
  24. 1.451s sshd.service
  25. 1.267s rhel-readonly.service
  26. 1.035s sysstat.service
  27. 1.001s rpc-statd-notify.service
  28. 910ms systemd-logind.service
  29. 739ms kdump.service
  30. 738ms network.service
  31. ...

从上面的输出中可以看出,每台设备都是基于所花费的时间进行排序的,您可以简单地找出哪些服务在启动和分析问题时花费的时间较长。

接下来,我们还可以使用 critical-chain 子命令查看默认目标或指定单元列表的时间关键链的树,如图所示。

  1. # systemd-analyze critical-chain
为默认目标打印时间关键链
  1. The time after the unit is active or started is printed after the "@" character.
  2. The time the unit takes to start is printed after the "+" character.
  3. multi-user.target @48.342s
  4. └─mariadb.service @31.560s +16.159s
  5. └─network.target @31.558s
  6. └─network.service @30.819s +738ms
  7. └─NetworkManager-wait-online.service @26.035s +4.779s
  8. └─NetworkManager.service @23.821s +2.212s
  9. └─network-pre.target @23.821s
  10. └─firewalld.service @19.863s +3.957s
  11. └─polkit.service @15.381s +4.413s
  12. └─basic.target @12.271s
  13. └─sockets.target @12.271s
  14. └─virtlockd.socket @12.270s
  15. └─sysinit.target @12.251s
  16. └─systemd-update-utmp.service @12.196s +54ms
  17. └─auditd.service @11.705s +486ms
  18. └─systemd-tmpfiles-setup.service @11.609s +93ms
  19. └─rhel-import-state.service @11.397s +211ms
  20. └─local-fs.target @11.363s
  21. └─run-user-0.mount @46.910s
  22. └─local-fs-pre.target @10.575s
  23. └─lvm2-monitor.service @5.996s +4.577s
  24. └─lvm2-lvmetad.service @7.376s
  25. └─lvm2-lvmetad.socket @5.987s
  26. └─-.slice
  1. # systemd-analyze critical-chain ntp.service networking.service

最后,让我们看看一个更重要的子命令,它允许生成图形(svg 格式)详细的已启动的系统服务,以及在什么时候突出显示它们的初始化时间,如下所示。

确保图形显示模式或 x-windows 已启用以查看绘图。

  1. # systemd-analyze plot > boot_analysis.svg
  2. # xviewer boot_analysis.svg

Linux 启动分析

以上所有命令都将打印本地机器的启动性能统计信息。 要通过ssh从远程主机查看信息,请使用-H标志并指定[email protected]指令,如图所示。

  1. # systemd-analyze time -H [email protected]
  2. # systemd-analyze blame -H [email protected]
  3. # systemd-analyze critical-chain -H [email protected]

systemd-analysis也可用于从系统和 systemd(服务管理器)等中查找其他状态和跟踪信息。 有关更多信息,请参阅其手册页。

  1. # man systemd-analyze

另请参阅 : 如何在 SystemD 中更改运行级别(目标)

systemd-analyze – 在Linux中查找系统启动性能统计信息的更多相关文章

  1. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  2. linux中查找文件属于那个软件包的方法

    一.linux中查找文件属于那个软件包的方法 [root@salt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/ ...

  3. 在Amazon FreeRTOS V10中使用运行时统计信息

    在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考 ...

  4. Linux中查找最耗性能的JAVA代码

    在这里总结一下查找Linux.Java环境下最耗CPU性能的代码段的方法.基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程).使用jstack把java线程堆栈给dump下来.然后,在堆 ...

  5. linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总

    (一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]:  只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...

  6. 如何使用find命令在Linux中查找文件

    Linux Find命令是Linux系统管理员工具库中最强大的工具之一. Find是一个命令行实用程序,它允许您根据用户给定的表达式搜索目录层次结构中的文件和目录,并对每个匹配的文件应用用户指定的操作 ...

  7. 在Linux中监视IO性能

    dd命令 iostat命令 理解iostat的各项输出 iostat的应用实例 附:在Windows中监视IO性能 延伸阅读 dd命令 dd其实是工作于比较低层的一个数据拷贝和转换的*nix平台的工具 ...

  8. linux中查找命令find、locate、whereis、which、type的区别

    find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/var/lib/locatedb)文件不同,find查找的是磁盘空间. locate locate命令其实 ...

  9. 在 Linux 中查找和删除重复文件

    原文链接:https://www.linuxprobe.com/linux-FSlint.html FSlint同时具有GUI和CLI模式.因此,对于新手来说,这是一个用户友好的工具.FSlint不仅 ...

随机推荐

  1. scala-03-list操作

    列表 Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是.. 1, 创建 lis ...

  2. Linux 上SSH 服务的配置和管理

    0.前期准备:清空防火墙,关闭SELinux. [root@localhost ~]# iptables -F #清空防火墙 [root@localhost ~]# /etc/init.d/iptab ...

  3. PTA (Advanced Level) 1006 Sign In and Sign Out

    Sign In and Sign Out At the beginning of every day, the first person who signs in the computer room ...

  4. selenium3 无人工干预地自动下载某个文件

    一:主要内容 下载效果展示 代码内容展示 saveToDisk不生效说明,即文件没有下载下来解决办法 二:展示效果 1.下载效果展示 用selenium3无人工干预的自动下载该文件到指定路径下,如:D ...

  5. 深入Spring:自定义事务管理

    转自: http://www.jianshu.com/p/5347a462b3a5 前言 上一篇文章讲了Spring的Aop,这里讲一下Spring的事务管理,Spring的事务管理是建立在Aop的基 ...

  6. java设计模式-菜鸟网络

    http://www.runoob.com/design-pattern/singleton-pattern.html

  7. Java基础——iO(二)

    接着上一篇,继续做学习笔记.学IO这块,突然找到一点好处,好像以后操作电脑,尤其是电脑里的文件啥的,可以很少的用鼠标了.添加.修改.删除啥的,几行代码就可以搞定了.这只是我一个初学者的一点小心思,IO ...

  8. 【JVM】2、JVM调优总结

    转自:http://unixboy.iteye.com/blog/174173/ 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内 ...

  9. 关于电脑重装win10系统导致编译环境失效(jdk)

    年前换了固态,于是重装了系统发现之前装在非系统盘的jdk1.8配置过系统环境后仍然不能正常使用的问题,在犹豫一会后选择了重装jdk, 由于之前用的是win7在环境配置上是 变量值内加;即可自行分行,但 ...

  10. Saving HDU(hdu2111,贪心)

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...