如何找到 Linux 系统安装了多久?

118 linux system-installation

如果没有人试图隐藏它,我如何找到自首次安装 Linux 系统以来的时间?

小智 115

sudo tune2fs -l /dev/sda1 **OR** /dev/sdb1*  | grep 'Filesystem created:'
Run Code Online (Sandbox Code Playgroud)

这将告诉您文件系统的创建时间。

* = 在第一列中,df /您可以找到要使用的确切分区。

  • +1。但是,我必须注意,我当前的桌面是在 1994 年左右创建的。从那时起,关于它的一切都发生了多次变化(包括磁盘和我使用的文件系统类型),但它仍然是同一个系统。这种方法最多只能告诉我最近移动到新文件系统的日期。 (8认同)
  • 解决方案很好,但是依赖于文件系统并且需要 root 权限。 (6认同)
  • 通常是 `/dev/sda1` 或类似的东西(无论第一列中显示的 `df /` 是什么),但原理是合理的。 (4认同)
  • 这不应该是公认的答案,因为它仅适用于我不使用的 ext2(可能高达 ext4?)。 (2认同)

pbo*_*oin 24

使用 dumpe2fs 检查根文件系统的日期。我真的想不出除了你要找的日期之外还有什么:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
Run Code Online (Sandbox Code Playgroud)

  • 你忘了提到这仅适用于 ext2/ext3/ext4 文件系统。 (3认同)

ctr*_*lor 19

周围有几个日期。

  • 所有文件都有日期。
  • 日志文件中有日期。

在 Debian 或 Ubuntu 及其衍生产品上,/var/log/installer/syslog如果存在,请参阅确定的答案,它是灌输日志的一部分。

但请注意,这并不能保证。(由于某些原因它可能不起作用,请参阅其他答案/评论。)


小智 17

在基于 Red Hat 的发行版(例如 CentOS、Scientific、Oracle 等)上,您可以使用:

rpm -qi basesystem
Name        : basesystem
Version     : 10.0
Release     : 7.el7
Architecture: noarch
Install Date: Mon 02 May 2016 19:20:58 BST
Group       : System Environment/Base
Size        : 0
License     : Public Domain
Signature   : RSA/SHA256, Tue 01 Apr 2014 14:23:16 BST, Key ID     199e2f91fd431d51
Source RPM  : basesystem-10.0-7.el7.src.rpm
Build Date  : Fri 27 Dec 2013 17:22:15 GMT
Build Host  : ppc-015.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
Summary     : The skeleton package which defines a simple Red Hat Enterprise Linux system
Description :
Basesystem defines the components of a basic Red Hat Enterprise Linux
system (for example, the package installation order to use during
bootstrapping). Basesystem should be in every installation of a system,
and it should never be removed.
Run Code Online (Sandbox Code Playgroud)

或者

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
Run Code Online (Sandbox Code Playgroud)

  • 为什么“rpm -qi”给我“安装日期:Mon 07 Jul 2014 03:20:44 PM UTC”,而“tune2fs”却说“文件系统创建:Sat Dec 20 23:41:41 2014”? (2认同)

Ada*_*atz 12

对文件系统和分发(我能想出的)最中立的解决方案是使用由 给出的最旧的文件ls -lact /etc,它查看每个文件的元数据以获取创建时间。虽然这可以玩游戏,但它不受touch提取档案或通过提取档案创建的文件的影响(例如tar -p保留时间戳)。

我认为最好查看文件而不是目录,因为目录在内容更改时更改其创建时间元数据(也许有人可以解释为什么会这样?)

ls -lact --full-time /etc |tail
Run Code Online (Sandbox Code Playgroud)

缺少GNU Coreutils 的系统应该删除该--full-time选项(排序顺序仍然是正确的,你仍然会得到这一天)。您可以使用stat FILE |grep Change(在 列出的最旧文件上运行)从文件的元数据中获取创建时间ls -lact

在其他非 Linux 系统上,stat该信息的排列可能略有不同,可能需要不同的标志。请注意,这仍然使用文件的元数据,并且不保证准确性。

还要注意的是stat从GNU Coreutils的具有“诞生”时间,这往往是错误的(Linux下ext4的收益率0,以表明它的未知,与FreeBSD UFS呈“诞生”的时间比我查询系统以上)。正确的值被列为其“更改”时间。

如果您想获得幻想并获取中最旧文件的创建时间/etc

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'
Run Code Online (Sandbox Code Playgroud)

这个命令在旧的 FreeBSD 系统(UFS,没有 GNU utils)上对我有用:

stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'
Run Code Online (Sandbox Code Playgroud)

(是的,这会解析ls,这是禁忌,但 . 中不应该有恶作剧命名的文件/etc。)

您还可以使用stat获取其他时间格式。例如,要获得Unix 纪元中的创建时间:(stat -c %Z FILE对于 GNU,请注意这%Z是“上次状态更改的时间”,但这是我的 Linux 和 BSD 系统的正确标志,如上所述;%W是“文件出生时间” ) 或stat -f %c FILE(使用 BSD)。


raj*_*h87 7

在 Fedora 中,anaconda 安装程序将安装的配置详细信息存储在 root 的主文件夹中,这可以让您有所了解。

在 Debian(至少是最近的)上,来自安装的几个日志存储在/var/log/installer/. 旧版本将它们存储在/var/log/installer.*. 这至少可以追溯到 2003 年。


alt*_*as5 6

ls -alct /|tail -1|awk '{print $6, $7, $8}'
Run Code Online (Sandbox Code Playgroud)


use*_*963 5

我一直在寻找类似的工具,我能想到的最好的就是ls -lAhF /etc/hostname,只是主机名文件的年龄。我认为,一般来说,系统的主机名是在开始时设置的,并且在系统的生命周期中保持不变。文件系统的创建日期肯定有帮助,但可能会产生误导。例如,我经常使用我前段时间安装的虚拟机映像,复制它,更改主机名并从中创建一个新服务器。因此,在我的情况下/etc/hostnametune2fs -l /dev/sda1