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

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

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

对于那些手动安装内核版本的人来说,/boot随着时间的推移,文件可能会变得越来越大。我想找出哪些内核版本很长时间没有启动,可以作为删除的候选。

文件上次访问时间

为了促进这个项目,我需要知道每个内核上次启动的时间。我看到了一个使用 查找特定日期之前的文件的问答atime。但是这个问答搜索的是 x 天之前的文件。我正在寻找所有文件并想知道上次访问时间。

通过 bash 脚本如何确定给定文件的最后访问时间?

编辑 1-必须在启动期间设置内核版本的最后访问时间

当 grub 挂载内核时,它处于ro(只读)模式,并且上次访问时间不会更新。

如果您运行update-initramfs -u -k all该文件,initrd.img所有内核的最后访问时间都会更新,即使它们今天尚未启动。

安装新内核时,所有以前的内核版本文件的system.map-w.x.yy-zzz最后访问时间都会更新,即使它们今天尚未启动。

为了正确记录内核版本真正启动的时间,我们需要touch文件vmlinuz-w.x.yy-zzz。使用 sudo powers 创建如下文件/etc/cron.d/

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    touch "/boot/vmlinuz-"`uname -r`

/boot现在当使用 muru 的答案列出文件时:

找到/boot/vm*-printf“%Ac%p\n”

Thu 21 Jul 2016 05:02:48 AM MDT /boot/vmlinuz-3.13.0-92-generic
Wed 26 Oct 2016 05:10:08 PM MDT /boot/vmlinuz-3.2.0-113-generic
Sat 15 Oct 2016 10:45:41 AM MDT /boot/vmlinuz-4.4.0-43-generic
Thu 20 Oct 2016 06:09:00 PM MDT /boot/vmlinuz-4.4.0-45-generic
Sat 06 Aug 2016 09:32:02 PM MDT /boot/vmlinuz-4.6.3-040603-generic
Sun 21 Aug 2016 12:59:04 PM MDT /boot/vmlinuz-4.7.1-040701-generic
Fri 26 Aug 2016 04:51:04 AM MDT /boot/vmlinuz-4.7.2-040702-generic
Thu 08 Sep 2016 06:46:52 PM MDT /boot/vmlinuz-4.7.3-040703-generic
Sun 25 Sep 2016 07:25:46 PM MDT /boot/vmlinuz-4.7.5-040705-generic
Sat 08 Oct 2016 03:08:45 PM MDT /boot/vmlinuz-4.8.1-040801-generic
Sat 22 Oct 2016 08:16:44 AM MDT /boot/vmlinuz-4.8.4-040804-generic
Sun 30 Oct 2016 12:56:12 PM MDT /boot/vmlinuz-4.8.5-040805-generic

安装新内核版本前检查可用空间

在安装新内核之前,最好先用/boot以下命令检查有多少可用空间和/或有多少已被使用:

rick@dell:~$ df /boot
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sdc3       30106300 20449376   8104556  72% /
────────────────────────────────────────────────────────────────
rick@dell:~$ du /boot --max-depth 0 -h
565M    /boot

要查看删除特定的先前内核可以节省多少空间,请使用以下命令:

rick@dell:~$ du /boot/*4.8.1* -h
1.4M    /boot/abi-4.8.1-040801-generic
204K    /boot/config-4.8.1-040801-generic
44M /boot/initrd.img-4.8.1-040801-generic
3.6M    /boot/System.map-4.8.1-040801-generic
4.8M    /boot/vmlinuz-4.8.1-040801-generic

答案1

使用stat命令:

   %x     time of last access, human-readable
   %X     time of last access, seconds since Epoch

所以:

stat -c %X /some/file

或者find

find /some/path -printf "%A@ %p\n"

由于find-printf

  %a     File's  last  access time in the format returned by the C
         `ctime' function.

  %Ak    File's last access time in the  format  specified  by  k,
         which  is  either `@' or a directive for the C `strftime'
         function.  The possible values for k  are  listed  below;
         some  of  them might not be available on all systems, due
         to differences in `strftime' between systems.

         @      seconds  since  Jan.  1,  1970,  00:00  GMT,  with
                fractional part.

答案2

我接受了 muru 的回答,因为它正确地展示了如何查找文件的最后访问时间。但是,当 grub 挂载内核时,它处于ro只读模式,因此最后访问时间不会更新。

此外,当您运行update-initramfs -u -k all该文件时initrd.img,即使它今天尚未启动,它也会使用所有内核的当前时间进行更新。

system.map-w.x.yy-zzz安装新内核时,即使今天尚未启动,也会访问所有内核文件。

为了正确记录内核上次启动的时间,请用 sudo powers 创建如下文件/etc/cron.d/

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    touch "/boot/vmlinuz-"`uname -r`

/boot现在,当使用 muru 的答案列出文件时vmlinuz-x.w.yy-zzz将显示该内核上次启动的时间。

相关内容