自安装以来如何确定Linux系统的“年龄”?

lis*_*sak 44 linux unix timestamp

我认为我可以轻松检查特定文件的时间戳。然后我意识到当我看到像1991.

Nia*_*gan 50

最简单的方法可能是(假设 sda1 是您的 /root/):

tune2fs -l /dev/sda1 | grep 创建

这应该会显示文件系统的创建日期。确认可以在 ext2 到 ext4 上工作,不确定其他文件系统!

  • 当我为我的 PC 获得一个新驱动器时,我通常会在其上创建分区,然后`cp -a` 数据通过。简而言之:不可能在所有情况下确定系统的年龄。 (2认同)

Sco*_*ack 16

我经常使用的一种机制是检查根主目录中文件的更改时间 (ctime)。由于/root主目录是在安装时创建的,并且通常很少使用,因此可以提供相对较好的近似值。正如 Kyle 在评论中澄清的那样,由于 ctime 指的是 inode,而不是数据,因此修改文件内容不会更改 ctime。

默认情况下,该ls命令打印文件的修改时间(mtime)。因此,如果像这样替换 ctime 选项,

ls -alct /root
Run Code Online (Sandbox Code Playgroud)

这将打印所有文件,显示创建时间并按时间排序。

例如,这里是/root我的一个系统中目录中最旧的 3 个文件的示例。

ls -alt install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 10238 Feb 18  2010 install.log.syslog
-rw-r--r--. 1 root   129 Dec  3  2004 .tcshrc
-rw-r--r--. 1 root   100 Sep 22  2004 .cshrc
Run Code Online (Sandbox Code Playgroud)

然后通过检查更改时间

ls -alct install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root   100 Feb 18  2010 .cshrc
-rw-r--r--. 1 root 10238 Feb 18  2010 install.log.syslog
-rw-r--r--. 1 root   129 Feb 18  2010 .tcshrc
Run Code Online (Sandbox Code Playgroud)

2010 年 2 月 18 日的日期肯定与我第一次安装该系统的大致时间相符。

  • ctime 实际上不是文件的创建时间,而是更改时间。这是我最后一次对 inode 进行更改。如果您更改文件的权限或所有者,这将会改变。很可能 /root 文件夹本身的所有者或权限没有改变,这就是为什么要排队。(我不知道 c 实际上代表什么——单个 unix 规范只有“time_t st_ctime 上次状态更改的时间”。 (4认同)

Mih*_*aiM 6

尝试

ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6
Run Code Online (Sandbox Code Playgroud)

安装操作系统时会生成密钥。

  • 这是一个好主意,但是在 SSH 密钥中发现了一些弱点,如果您已经完成了系统更新(并且您应该进行系统更新!),那么密钥就会重新生成。 (3认同)