#1 楼
sudo tune2fs -l /dev/sda1 **OR** /dev/sdb1* | grep 'Filesystem created:'
这将告诉您何时创建文件系统。
* =在
df /
的第一列中,您可以找到要使用的确切分区。评论
通常是/ dev / sda1或类似的东西(无论df /在第一列中显示什么),但原理是合理的。
–吉尔斯'所以-不再是邪恶的'
2011年3月23日在21:34
嘿,这很容易知道,谢谢。并且此信息也可以复制文件系统。 +1。
– Faheem Mitha
2011-3-23在22:04
该解决方案很好,但是取决于文件系统,并且需要root特权。
– golem
15年6月24日在23:22
+1。但是,我必须指出,我当前的桌面是在1994年左右创建的。从那时起,关于它的所有内容绝对发生了多次更改(包括磁盘和我使用的文件系统类型),但它仍然是同一系统。这种方法充其量只能告诉我最近转移到新文件系统的日期。
–cas
2015年11月13日4:20
这不应该是公认的答案,因为它仅适用于我不使用的ext2(可能高达ext4?)。
–索格
17 Mar 9 '17 at 11:09
#2 楼
使用dumpe2fs检查根文件系统的日期。除了您要查找的日期外,我真的想不出什么呢:dumpe2fs $(mount | grep 'on \/ ' | awk '{print }') | grep 'Filesystem created:'
评论
...或tune2fs -l
–forcefsck
11 Mar 23 '11 at 20:24
您忘了提到这仅适用于ext2 / ext3 / ext4文件系统。
–ŠimonTóth
11 Mar 23 '11 at 21:18
您会在我的几台机器上输入错误的日期,在这些机器上我已经升级了硬盘驱动器,并且只是将安装复制过来。
–德罗伯特
2012年8月30日在16:12
@derobert,鉴于操作人员的问题,我仍然认为我的答案是正确的。新磁盘与新RAM没有什么不同-即使您在其中弹出了新磁盘,您仍然具有相同的“安装” ...
– pboin
2012年10月22日20:26
@pboin不,当我复制安装时,它的磁盘更大,所以我重新分区并进行mkfs(然后使用tar / cp复制它,而不是dd)。甚至可能是一个不同的文件系统(例如ext2-> ext3-> ext4),这样您就可以得到我复制安装的时间了。这就是OP寻找日期之外的方式。
–德罗伯特
2012-10-22 21:54
#3 楼
周围有一些日期。所有文件都有日期。
日志文件中有日期。
在Debian或Ubuntu及其上派生,请参见
/var/log/installer/syslog
以获得最终答案(如果存在),它是滴注日志的一部分。但是请注意,这不能保证。 (出于某些原因,请参阅其他答案/评论。)
评论
不过,这可能特定于Debian / Ubuntu。
– Faheem Mitha
2011年3月23日在17:26
@Faheem Mitha:Ubuntu使用相同的文件/目录。
–BillThor
11 Mar 23 '11 at 21:13
@Bill:是的,我说的是针对Debian / Ubuntu的。这意味着该配方对Debian和Ubuntu均适用,但可能不适用于其他(非基于Debian的)Linux发行版。
– Faheem Mitha
2011年3月23日22:05
但是,并非所有文件都有创建日期。 AFAIK的出生日期仅在ext4中引入,无论如何不是POSIX。
– Konrad Gajewski
2015年12月6日在1:49
@KonradGajewski但是这个答案,或者它的任何评论都提到了文件创建日期。
–ctrl-alt-delor
2015年12月7日在21:48
#4 楼
在基于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.
或
rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
评论
rpm -qi如何给我安装日期:UTC,2014年7月7日星期一,03:20:44 PM,而tune2fs说文件系统创建:2014年12月20日,星期六:23:41:41?
–本杰明
17-2-28在0:33
在我的Azure的VM上所有时间都相同,因此rpm根本不可靠
–克里斯
19-09-17在6:59
#5 楼
对文件系统和分发(我可以提出)最不中性的解决方案是使用ls -lact /etc
给出的最旧文件,该文件在创建时会查看每个文件的元数据。虽然可以玩,但不受touch
或通过提取存档创建的文件的影响(例如,保留时间戳的tar -p
)。我认为最好查看文件而不是目录,因为目录会更改其目录当内容改变时(可能有人可以弄清为什么)创建时间元数据。
ls -lact --full-time /etc |tail
缺少GNU Coreutils的系统应删除
--full-time
选项(排序顺序)仍然是正确的,您仍然会获得成功)。您可以使用stat FILE |grep Change
从文件的元数据中获取创建时间(在ls -lact
列出的最早文件上运行该文件)。在其他非Linux系统上,
stat
的信息排列可能略有不同,可能需要不同的标志。请注意,它仍然使用文件的元数据,并且不能保证准确性。还要注意,来自GNU Coreutils的
stat
具有“出生”时间,这通常是错误的(Linux的ext4产生0
来表明它是未知,带有UFS的FreeBSD显示的“出生”时间比我查询的系统要早。正确的值列为其“更改”时间。如果您想花哨的时间以及获取
/etc
中最旧文件的创建时间:ls -lact --full-time /etc |awk 'END {print ,,}'
此命令对我来说适用于旧的FreeBSD系统(UFS,无GNU utils):
stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print }'
(是的,这解析
ls
,这是禁忌,但/etc
中不应有错误命名的文件。)您还可以使用
stat
获取其他时间格式。例如,要获取Unix时代的创建时间:stat -c %Z FILE
(对于GNU,请注意,%Z
是“上次状态更改的时间”,但这是我的Linux和BSD系统的正确标志,如上所述; %W
是“创建时间”。文件出生”)或stat -f %c FILE
(带有BSD)。评论
这对我不起作用(一些文件比安装日期早很多)。但是,仅查看/ var和/ etc中的符号链接似乎可行:ls -lact --full-time / var | grep'->'|尾巴-4;回声; ls -lact-全职/ etc | grep'->'|尾巴-4
– ndemou
20 Jan 10 '20在16:24
@ndemou –您使用的是哪个版本的ls?在什么文件系统上?我不知道您看到的创建时间是否正确; ls可能忽略/误解了-c和/或文件系统可能未正确存储它。符号链接上有趣的想法。您可以使用find / etc / var -maxdepth 1 -type l -print0 | xargs -0 ls -lactd | tail -n4更轻松地完成操作
–亚当·卡兹(Adam Katz)
20 Jan 14 '14:56
ls是ver.8.2,文件系统是xfs。 stat还显示与ls输出匹配的更改和修改时间(FWIW这是CentOS 7服务器)
– ndemou
20 Jan 19'在22:55
#6 楼
在Fedora中,anaconda安装程序会将安装的配置详细信息存储在root的主文件夹中,这可以使您有所了解。在Debian(至少是最新的)上,安装中的一些日志存储在
/var/log/installer/
。旧版本将它们存储在/var/log/installer.*
中。至少可以追溯到2003年。#7 楼
我一直在寻找类似的工具,而我能想到的最好的就是ls -lAhF /etc/hostname
,仅仅是主机名文件的使用期限。我认为,通常,系统的主机名是在开始时设置的,在系统的生命周期内保持不变。创建文件系统的日期确实有帮助,但可能会引起误解。例如,我经常使用我之前安装的虚拟机映像,将其复制,更改主机名并从中创建新服务器。因此,就我而言,/etc/hostname
比tune2fs -l /dev/sda1
更好的指示#8 楼
根据OP的要求。如果您正在寻找时间,请在设置系统时确定该时间。例如,系统可能已经被克隆(未安装),这将有效地伪造文件创建时间。
您可以通过搜索最早的文件来估计使用期限。
评论
mattdm是正确的;您可以获得访问时间,修改时间和更改时间; ctime是最后一个。看到这个帖子
– Michael Mrozek
2011年3月23日在17:48
#9 楼
ls -alct /|tail -1|awk '{print , , }'
#10 楼
我查看了/ boot中最旧的文件(“ ls -ltr / boot”的顶部。通常从第一次安装开始就有一个原始的引导扇区。在我最旧的系统上,它给出了原始安装的日期,尽管已替换了其中的所有内容。机器并复制文件系统的内容大约几次:)#11 楼
如果在安装期间使用了LVM,则可以检查在安装当天完成的逻辑卷的创建日期,例如:$ sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
LV Creation host, time kubuntu, 2014-12-28 20:52:15 +0100
#12 楼
ls -alct /root
->在安装时创建根主目录评论
但是事后可能会发生变化。如果内核未保留在/中,则/上的时间更改的可能性较小,但这仍然不是一个很好的指标。 (提醒:-c不是创建时间,而是元数据更改时间。大多数Unix文件系统不存储文件的创建时间。)
–吉尔斯'所以-不再是邪恶的'
2011年3月23日在21:36
告诉我任何无法更改的时间:)
–jet
2011-3-24在0:09
该问题的假设是“假设没有人试图隐藏它”。 / root的ctime可能会自然变化(例如,每次有人在其中创建文件时)。
–吉尔斯'所以-不再是邪恶的'
2011-3-24在0:13
#13 楼
从前一段时间以来,我通常在sime时安装linux发行版的一个名为Tuptime的程序包,该程序包保留有关运行时间,启动,关闭的有用统计信息...对于您的问题,该行“系统寿命”具有该信息。例如:
System startups: 110 since 10:15:27 08/08/15
System shutdowns: 107 ok - 2 bad
System uptime: 4.04 % - 1 days, 22 hours, 4 minutes and 44 seconds
System downtime: 95.96 % - 45 days, 13 hours, 57 minutes and 30 seconds
System life: 47 days, 12 hours, 2 minutes and 15 seconds
Largest uptime: 2 hours, 10 minutes and 44 seconds from 20:49:17 09/08/15
Shortest uptime: 9 seconds from 10:23:36 08/08/15
Average uptime: 25 minutes and 8 seconds
Largest downtime: 7 days, 10 hours, 17 minutes and 26 seconds from 06:09:45 10/08/15
Shortest downtime: 15 seconds from 19:27:24 19/09/15
Average downtime: 9 hours, 56 minutes and 42 seconds
Current uptime: 23 minutes and 33 seconds since 21:54:09 24/09/15
更多信息:https://github.com/rfrail3/tuptime/
#14 楼
这是另一种方式# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
#15 楼
处理虚拟机时,创建映像时会创建一些文件系统等,可能要比创建实例早。在实例启动期间,
/etc/locale.conf
上的时间戳似乎已修改实例创建。除非稍后修改语言环境,否则这可能是个好时机。/etc/hostname
与我们类似,不同之处在于我们在某些情况下会对其进行修改。创建实例时已修改但之后未修改的其他文件?
#16 楼
这是一个不错的脚本,它尝试使用各种技术来提供各种操作系统的OS安装日期:https://github.com/dmbaturin/scripts/blob/master/installdate.sh#17 楼
我找到了一个简单的文件。名称“ 1”。也许是第一个文件。▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1
评论
为什么要投票。这个时间实际上是指出最后一次系统安装的时间。
–eexpress
17年4月6日在2:28
我的Linux上没有此文件。
–凯文·勒梅尔
18-10-4在10:31
评论
你的年龄是什么意思?@Let:自设置以来的时间。
@让:我期待着“检查/ some / oscure / file的时间戳,它永远不会被修改”的答案。请回答。
有点像问[Theusus的飞船]的年龄吗(en.wikipedia.org/wiki/Ship_of_Theseus)?
多年来,Linux安装的每个部分都被替换了吗,它仍然是相同的安装吗? (这与一艘船的所有零件都缓慢更换的原始比喻类似)我问,因为我的根分区已更改了磁盘和文件系统,而我的主分区早于此。有些设备曾经准备为黄金映像,然后在部署时获得自定义主机名,ssh主机密钥和fs uuid。金像可以被修改并再次冻结,例如交钥匙的Linux世系。