当我运行hostnamectl
命令时,我得到以下输出:
$ hostnamectl
Static hostname: myhostname
Icon name: computer-desktop
Chassis: desktop 🖥
Machine ID: 12345e09a3a2464689c345fe7b12345f
Boot ID: 123451b9f31ff4c166f8368c1f86666ad
Operating System: openSUSE Leap 15.6
CPE OS Name: cpe:/o:opensuse:leap:15.6
Kernel: Linux 6.4.0-150600.23.33-default
Architecture: x86-64
Hardware Vendor: ASRock
Hardware Model: B450 Pro4 R2.0
Firmware Version: P5.60
Firmware Date: Thu 2022-10-20
Firmware Age: 2y 5month 2w 3d <<<<<<<<<< this
我想知道:这个值是Firmware Age
从哪里来的?我不知道还有其他命令可以返回这个值。hostnamectl
这个值是如何以及从哪里获取的?
该
Firmware Age
值hostnamectl
主要来自 UEFI 时间戳。如果不可用,它会回退到 DMI、bios_date,并作为最后的手段,使用 systemd 生成的数据。
在 254 之前的 systemd 版本中,您不会看到此字段。
检查值是否
cat /sys/class/dmi/id/bios_date
与/sbin/dmidecode -s bios-release-date
Firmware Age
hostnamectl.c源文件包含:
这意味着报告的是与运行命令的当前日期(调用的now函数的来源)
Firmware Age
之间的差异。Firmware Date
hostnamectl
clock_gettime
以下是一些方法:
使用
file $(type -p hostnamectl)
来查看是否hostnamectl
为脚本。如果是,则less $(type -p hostnamectl)
。如果它是可执行文件,
看看它到底做了什么;
或者
找出哪个包提供
hostnamectl
了对于 Debian 和 Ubuntu,
然后是
apt source
那个包,并阅读源代码。