查找上次引导特定 Linux 内核版本的时间

随着时间的推移,您应该在 Linux 机器上安装或升级到许多新的内核版本。 如果您的系统上安装了多个 Linux 内核,您将如何找到最后一次引导特定 Linux 内核版本的时间? 这就是我们现在要发现的。 本指南解释了如何检查 Linux 内核上次使用或启动的时间。

列出所有已安装的 Linux 内核

在我们找出启动特定 Linux 内核的时间之前,让我们 检查所有已安装内核的列表 在我们的 Linux 系统中。

默认情况下,所有已安装的 Linux 内核及其相关文件都存储在 /boot 目录。 只需使用检查此目录的内容 find 查看已安装内核列表的命令:

$ find /boot/vmli*

我的 Ubuntu 20.04 LTS 桌面的示例输出:

/boot/vmlinuz
/boot/vmlinuz-5.4.0-64-generic
/boot/vmlinuz-5.4.0-65-generic
/boot/vmlinuz.old
检查 Linux 中已安装的内核

正如您在上面的输出中看到的,安装了两个 Linux 内核版本(5.4.0-64 和 5.4.0-65)。 默认会启动最新的Kernel,所以5.4.0-65的最后一次访问时间是今天。 现在让我们检查旧内核版本(即 5.4.0-64)的最后一次启动时间。

查找上次启动特定 Linux 内核版本的时间

通过查看相关内核映像文件的上次访问时间,我们可以很容易地找到内核上次启动的时间。 在 Linux 中,有一个名为的命令行实用程序 stat 这有助于我们找到这样的细节。

stat 命令用于显示文件和文件系统信息,例如大小、权限、创建和访问日期等。

找出特定的 Linux 内核版本(例如 vmlinuz-5.4.0-64-generic) 最后一次启动,运行:

$ stat -c %x /boot/vmlinuz-5.4.0-64-generic 

这里,

  • -c flag用于指定FORMAT,
  • %x 用于以人类可读的格式显示上次访问的时间。

样本输出:

2021-01-23 13:15:00.000000000 +0530
使用 stat 命令查找上次启动特定 Linux 内核版本的时间

根据上述输出,Linux Kernel 版本 5.4.0-64 最后一次启动是在 2021 年 1 月 23 日。

你也可以使用资本 %X 如果要显示,请在上述命令中标记 Unix纪元时间 在输出中。

$ stat -c %X /boot/vmlinuz-5.4.0-64-generic 
1611387900

另一种查找 Linux 内核访问时间的方法是使用 find 命令如下:

$ find /boot/vmlinuz-5.4.0-64-generic -printf "%[email protected] %pn"
1611387900.0000000000 /boot/vmlinuz-5.4.0-64-generic

显示上次使用特定 Linux 内核版本启动的时间 journalctl 命令

在现代 Linux 发行版中使用 系统 服务管理器,我们可以使用 journalctl 命令显示最后一次使用或引导 Linux 内核的时间。

要查看最近的引导,请运行以下命令:

$ journalctl --boot | grep "Linux version"

或者,

$ journalctl -b | grep "Linux version"

样本输出:

Feb 08 11:28:01 ostechnix kernel: Linux version 5.4.0-65-generic ([email protected]) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 (Ubuntu 5.4.0-65.73-generic 5.4.78)
在 Linux 中使用 journalctl 命令查看最近的启动在 Linux 中使用 journalctl 命令查看最近的启动

要列出所有可用的先前引导,请运行:

$ journalctl --list-boots

您将看到一长串以前的引导,如下面的输出所示:

[...] 
-10 b4634cec90874b47a3aa4342b14c49bd Tue 2021-02-02 17:14:46 IST—Tue 2021-02-02 22:19:11 IST
 -9 3b98c3f4a27f4444bf5b08243f4e27a6 Wed 2021-02-03 10:48:10 IST—Wed 2021-02-03 22:20:14 IST
 -8 5e75c35655f24015af92063fe6be1bd7 Thu 2021-02-04 10:44:31 IST—Thu 2021-02-04 11:21:08 IST
 -7 1ac699796f6d4fe288e231720027bb3a Thu 2021-02-04 11:21:29 IST—Thu 2021-02-04 22:26:52 IST
 -6 d3a9d739e07546a6836d9f84a0bbb6c3 Fri 2021-02-05 12:24:21 IST—Fri 2021-02-05 22:15:59 IST
 -5 ba8b180cade44f2bad11710b72b69475 Sat 2021-02-06 10:46:20 IST—Sat 2021-02-06 10:48:42 IST
 -4 58f942c57e044e63934e682ba99e66b9 Sat 2021-02-06 10:49:10 IST—Sat 2021-02-06 11:40:51 IST
 -3 364162c62fbd4d3ca25c2d37b65168cf Sat 2021-02-06 11:45:21 IST—Sat 2021-02-06 15:22:31 IST
 -2 97492fb7ad0e4d3d9f818c428f8e5cbe Sat 2021-02-06 15:24:24 IST—Sat 2021-02-06 22:47:39 IST
 -1 67a81252453045eca42daa9417f48eed Sun 2021-02-07 10:49:30 IST—Mon 2021-02-08 01:00:45 IST
  0 3850ccfefeb9428689c521a206b1df81 Mon 2021-02-08 11:28:01 IST—Mon 2021-02-08 18:46:14 IST
使用 journalctl 命令列出 Linux 中所有可用的先前引导使用 journalctl 命令列出 Linux 中所有可用的先前引导

您现在可以检查每个引导描述符以查找上次使用特定内核版本的时间。

例子:

$ journalctl --boot=ba8b180cade44f2bad11710b72b69475 | grep "Linux version"

样本输出:

Feb 06 10:46:20 ostechnix kernel: Linux version 5.4.0-65-generic ([email protected]) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 (Ubuntu 5.4.0-65.73-generic 5.4.78)
显示上次使用 journalctl 命令启动特定 Linux 内核版本的时间显示上次使用 journalctl 命令启动特定 Linux 内核版本的时间

希望这可以帮助。