你的 Linux 系统需要多长时间才能启动?
当您启动系统时,它会在向您显示登录屏幕之前经历一系列事件。您是否检查过系统启动需要多长时间?一般来说,这一切都发生在几秒钟或几分钟内,但我们不知道确切的时间。有时由于某些原因,您可能需要找到系统启动所需的确切时间。无论您想了解的原因是什么,有一个 systemd-analyze 实用程序可以让您知道 Linux 系统启动所需的确切时间。
虽然您可以使用时钟或秒表来监控系统开始启动的时间,但这并不适用于所有情况,特别是对于运行中的服务器,您很难重新启动。例如,如果您有一台运行关键服务的服务器,并且您需要找到系统启动所需的时间。在这种情况下,您需要重新启动服务器,但这不可能每次都可以。
在本文中,您将了解 Linux 系统启动需要多长时间,以及如果启动缓慢,如何缩短该时间。
注意:
- 本文讨论的过程已在 Ubuntu 20.04 LTS 上进行了测试。可以在任何启用了 systemd 的 Linux 发行版中执行相同的过程。
- 要打开命令行终端,请使用 Ctrl+Alt+T 键盘快捷键。
什么是 systemd 分析?
Systemd-analyze 是一个可用于了解系统上次启动统计信息的工具。使用 systemd-analyze 工具,您可以找到有关系统启动所需时间以及每个单元启动所需时间的信息。幸运的是,您不需要安装此工具,因为它是内置的 systemd 工具。您可以在终端中使用以下命令进行验证:
which systems-analyze
输出将显示可执行命令的完整路径。
查找系统启动所需的时间
为了找到系统启动所需的时间,只需在终端中输入 system-analyze ,不带任何命令行参数:
systemd-analyze
当您执行上述命令时,systemd-analyze 工具会计算系统完成启动所需的时间,并将其分解为内核和用户空间。
正如您在上面的屏幕截图中看到的,我们系统的总启动时间为 32.378 秒。秒并分解为:
- 内核:6.074s
- 用户空间:26.304s
调查/排除启动缓慢的问题
如果启动时间较长,您需要找出哪个服务减慢了启动过程。您可以使用systemd-analyzeblame命令找到它。此命令列出了在引导时启动的所有正在运行的服务以及它们所花费的时间。有了这些信息,您就可以优化系统的启动时间。
在终端中发出以下命令,以查找导致启动过程缓慢的服务:
sudo systemd-analyze blame
此命令列出了启动时启动的服务以及每个服务初始化所需的时间。该列表按经过的时间降序排列。
责任列表可能会很长,通常前 10 条就足以找到高度耗时的服务。因此,将上述命令的输出通过管道传输到“head”命令,如下所示:
sudo systemd-analyze blame | head
您还可以以时间关键事件链树的形式打印输出。在终端中发出以下命令来执行此操作:
systemd-analyze critical-chain
在输出中,您将看到按时间(服务激活时)降序排列的事件链。每个事件中“@”字符后面的值是服务激活的时间。而每个单元中“+”字符后面的值表示服务启动所花费的时间。
从上述命令收到的输出中,您可以轻松找出哪个服务启动时间较长,从而导致系统启动缓慢。从顶部开始,禁用启动时间较长的服务,只要它们不需要在启动时启动。此外,禁用所有虽然花费较少时间但在启动时不需要的服务,因为它们也会影响系统启动时间。
要禁用任何服务,请使用以下语法:
sudo systemctl disable service-name
这就是全部内容了!在本文中,您学习了如何使用 systemd 内置工具来了解系统启动所需的时间。如果启动时间较长,您还可以找到负责该问题的服务并禁用它们以缩短启动时间。但请注意,某些默认服务需要在启动时启动,因此不建议在不知道其实际用途的情况下禁用任何服务,否则您可能会遇到麻烦。