如果没有人试图隐藏Linux系统,我怎么能找到它的时间?

评论

你的年龄是什么意思?

@Let:自设置以来的时间。

@让:我期待着“检查/ some / oscure / file的时间戳,它永远不会被修改”的答案。请回答。

有点像问[Theusus的飞船]的年龄吗(en.wikipedia.org/wiki/Ship_of_Theseus)?

多年来,Linux安装的每个部分都被替换了吗,它仍然是相同的安装吗? (这与一艘船的所有零件都缓慢更换的原始比喻类似)我问,因为我的根分区已更改了磁盘和文件系统,而我的主分区早于此。有些设备曾经准备为黄金映像,然后在部署时获得自定义主机名,ssh主机密钥和fs uuid。金像可以被修改并再次冻结,例如交钥匙的Linux世系。

#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/hostnametune2fs -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