Wie finde ich heraus, vor wie langer Zeit ein Linux-System installiert wurde?


97

Wie kann ich die Zeit seit der Erstinstallation eines Linux-Systems ermitteln, sofern noch niemand versucht hat, sie zu verbergen?


Was meinst du mit Alter?
Let_Me_Be

@Let: Die Zeit seit der Einrichtung.

1
@Let: Ich habe eine Antwort nach dem Motto "Überprüfe den Zeitstempel von / some / oscure / file, es wird nie geändert" erwartet. Bitte machen Sie das eine Antwort.

2
Ist das nicht ein bisschen so, als würde man nach dem Alter von [Theseus 'Schiff] fragen (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu

2
Wenn im Laufe der Jahre jeder Teil einer Linux-Installation ausgetauscht wurde, ist es dann immer noch dieselbe Installation? (Wie die ursprüngliche Analogie eines Schiffes, bei dem alle Teile langsam ausgetauscht wurden.) Ich frage, weil meine Root-Partition die Festplatten und Dateisysteme geändert hat und meine Home-Partition älter ist. Einige Appliances werden einmal als Gold-Images erstellt und erhalten dann bei der Bereitstellung benutzerdefinierte Hostnamen, SSH-Hostschlüssel und FS-UUIDs. Gold-Images können geändert und erneut eingefroren werden, wie die Turnkey-Linux-Linie.
Tobu

Antworten:


99
tune2fs -l /dev/sda1 **OR** /dev/sdb1*  | grep 'Filesystem created:'

Hier erfahren Sie, wann das Dateisystem erstellt wurde.

* = In der ersten Spalte von df /finden Sie die genaue zu verwendende Partition.


4
Normalerweise /dev/sda1oder so ähnlich (was auch immer df /in der ersten Spalte gezeigt wird), aber das Prinzip ist Ton.
Gilles

1
Hey, das ist praktisch zu wissen, danke. Und diese Informationen überleben auch das Kopieren des Dateisystems. +1.
Faheem Mitha

4
Die Lösung ist gut, aber abhängig vom Dateisystem und erfordert Root-Rechte.
Golem

7
+1. Allerdings muss ich beachten, dass mein aktueller Desktop um 1994 erstellt wurde. Absolut alles daran hat sich seitdem mehrmals geändert (einschließlich der Festplatten und des Dateisystemtyps, den ich verwende), aber es ist immer noch dasselbe System. Diese Methode teilt mir bestenfalls das Datum des letzten Wechsels in ein neues Dateisystem mit.
cas

Dies sollte nicht die akzeptierte Antwort sein, da es nur mit ext2 (vielleicht bis zu ext4?) Funktioniert, das ich nicht benutze.
Sauger

23

Überprüfen Sie das Datum des Root-Dateisystems mit dumpe2fs. Ich kann mir nicht vorstellen, wie das anders sein könnte als das Datum, das Sie suchen:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'

1
... odertune2fs -l
forcefsck

2
Sie haben vergessen zu erwähnen, dass dies nur für das Dateisystem ext2 / ext3 / ext4 gilt.
Let_Me_Be

Auf mehreren meiner Computer, auf denen ich Festplatten aktualisiert und die Installation einfach kopiert habe, wurde das falsche Datum angezeigt.
Derobert

1
@derobert, ich denke immer noch, dass meine Antwort angesichts der Frage des OPs richtig wäre. Eine neue Festplatte unterscheidet sich nicht von neuem RAM - Sie haben immer noch die gleiche 'Installation', obwohl Sie eine neue Festplatte in ...
pboin 22.10.12

@pboin Nein, wenn ich die Installation kopiere, ist es eine größere Festplatte, also partitioniere ich und mkfs neu (dann benutze tar / cp, um sie zu kopieren, nicht dd). Kann sogar ein anderes Dateisystem sein (z. B. ext2 -> ext3 -> ext4). Sie haben also die Zeit, die ich für die Installation benötigt habe. So könnte es anders sein als das Datum, nach dem OP sucht.
Derobert

16

Es liegen ein paar Datteln herum.

  • Alle Dateien haben Daten.
  • Protokolldateien enthalten Datumsangaben.

Unter Debian oder Ubuntu und ihren Derivaten finden Sie /var/log/installer/syslogdie endgültige Antwort, falls vorhanden. Sie ist Teil des Protokolls der Instillation.

Beachten Sie jedoch, dass dies nicht garantiert ist. (Siehe andere Antworten / Kommentare für einige Gründe, die möglicherweise nicht funktionieren.)


Dies könnte jedoch spezifisch für Debian / Ubuntu sein.
Faheem Mitha

@Faheem Mitha: Dieselbe Datei / dasselbe Verzeichnis wird für Ubuntu verwendet.
BillThor

1
@Bill: Ja, ich sagte spezifisch zu Debian / Ubuntu. Das Rezept würde also sowohl für Debian als auch für Ubuntu funktionieren, möglicherweise jedoch nicht für andere (nicht auf Debian basierende) Linux-Distributionen.
Faheem Mitha

Aber nicht alle Dateien haben ein Erstellungsdatum. Das AFAIK-Geburtsdatum wurde erst in ext4 eingeführt, und das ist sowieso kein POSIX.
Konrad Gajewski

@ KonradGajewski Aber weder diese Antwort noch irgendein Kommentar erwähnen das Erstellungsdatum der Datei.
Strg-Alt-Delor

12

Auf Red Hat-basierten Distributionen (z. B. CentOS, Scientific, Oracle usw.) können Sie Folgendes verwenden:

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.

oder

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST

1
Wie kommt es, rpm -qigibt mir Install Date: Mon 07 Jul 2014 03:20:44 PM UTCdabei tune2fssagt Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin

Auf meiner Azure-VM haben alle die gleiche Zeit, daher ist die Drehzahl überhaupt nicht zuverlässig
Chris,

10

Die Lösung, die für das Dateisystem und die Distribution am neutralsten ist (die ich mir ausdenken kann), ist die Verwendung der ältesten von angegebenen Datei ls -lact /etc, die die Metadaten jeder Datei für die Erstellungszeit untersucht. Dies kann zwar gespielt werden, ist jedoch nicht von touchDateien betroffen , die durch das Extrahieren von Archiven erstellt wurden (z. B. tar -pum Zeitstempel beizubehalten).

Ich denke , es ist am besten an Dateien zu suchen , anstatt Verzeichnissen da Verzeichnisse haben ihre Erstellungszeit Metadaten ändern , wenn ihre Inhalte ändern (vielleicht kann Licht jemand Schuppen auf , warum das so ist?)

ls -lact --full-time /etc |tail

Systeme, denen GNU Coreutils fehlen, sollten die --full-timeOption entfernen (die Sortierreihenfolge ist weiterhin korrekt und Sie erhalten weiterhin den Tag). Sie können die Erstellungszeit aus den Metadaten einer Datei abrufen stat FILE |grep Change(führen Sie diese für die älteste Datei aus, die von aufgelistet wird ls -lact).

Auf anderen Nicht-Linux-Systemen stathaben diese Informationen wahrscheinlich eine etwas andere Anordnung und erfordern möglicherweise andere Flags. Beachten Sie, dass hierbei immer noch die Metadaten der Datei verwendet werden und die Genauigkeit nicht garantiert wird.

Beachten Sie auch, dass statGNU Coreutils eine "Geburts" -Zeit hat, die tendenziell falsch ist (Linux mit ext4 gibt 0an, dass es unbekannt ist, FreeBSD mit UFS zeigte eine "Geburts" -Zeit, die älter ist als das von mir abgefragte System). Der richtige Wert wurde als "Änderungs" -Zeit angegeben.

Wenn Sie sich etwas einfallen lassen und nur die Erstellungszeit der ältesten Datei abrufen möchten, gehen Sie wie folgt vor /etc:

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'

Dieser Befehl funktionierte für mich auf einem alten FreeBSD-System (UFS, keine GNU-Utils):

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

(Ja, das parst lsund das ist tabu, aber es sollten keine Dateien mit schelmischen Namen drin sein /etc.)

Sie können auch verwenden stat, um andere Zeitformate abzurufen. Um beispielsweise die Erstellungszeit in der Unix-Epoche zu ermitteln : stat -c %Z FILE(Beachten Sie bei GNU, dass %Zes sich um die "Zeit der letzten Statusänderung" handelt, dies jedoch das richtige Flag für meine Linux- und BSD-Systeme ist, wie oben angegeben; dies %Wist die "Zeit der Dateigeburt". ) oder stat -f %c FILE(mit BSD).


6

In Fedora speichert das Anaconda-Installationsprogramm die Konfigurationsdetails Ihrer Installation im Stammordner, damit Sie einen Eindruck davon bekommen.

Unter Debian (mindestens neuere) werden mehrere Protokolle aus der Installation in gespeichert /var/log/installer/. Ältere Versionen haben sie in gespeichert /var/log/installer.*. Das ist zumindest bis 2003 zurück.


4

Wie vom OP gefordert.

Wenn Sie nach der Uhrzeit suchen, zu der das System eingerichtet wurde, können Sie dies nicht feststellen. Zum einen wurde das System möglicherweise geklont (nicht installiert), wodurch die Zeit für die Dateierstellung fälscht wurde.

Sie können das Alter schätzen, indem Sie nach den ältesten Dateien suchen.


mattdm hat recht; Sie können die Zugriffszeit, die Änderungszeit und die Änderungszeit abrufen. ctime ist die letzte. Siehe diesen SO Beitrag
Michael Mrozek


2

Ich schaue auf die älteste Datei in / boot (oben in "ls -ltr / boot"). Auf meinem ältesten System wird das Datum der ursprünglichen Installation angezeigt, obwohl alles in "ls -ltr / boot" ersetzt wurde die Maschine und kopierte den Inhalt des Dateisystems um ein paar Male :)


2

Ich habe nach einem ähnlichen Tool gesucht und das Beste, was ich mir einfallen lassen konnte, war ls -lAhF /etc/hostnameeinfach das Alter der Hostnamensdatei. Ich denke, im Allgemeinen wird der Hostname eines Systems am Anfang festgelegt und bleibt während der Lebensdauer des Systems unverändert. Das Datum der Erstellung des Dateisystems ist sicherlich hilfreich, kann jedoch irreführend sein. Ich verwende zum Beispiel oft ein Image für virtuelle Maschinen, das ich vor einiger Zeit installiert habe, kopiere es, ändere den Hostnamen und erstelle daraus einen neuen Server. Daher ist in meinem Fall /etc/hostnameeine bessere Indikation alstune2fs -l /dev/sda1


1

Wenn Sie während der Installation LVM verwendet haben, können Sie das Erstellungsdatum eines logischen Volumes überprüfen, das am Installationstag ausgeführt wurde. Beispiel:

$ sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
  LV Creation host, time kubuntu, 2014-12-28 20:52:15 +0100

0

ls -alct /root -> Das Stammverzeichnis wird bei der Installation erstellt


1
Aber es könnte sich später geändert haben. Es /ist etwas unwahrscheinlicher, dass sich die Zeit geändert hat, wenn der Kernel nicht beibehalten wird /, aber es ist immer noch kein sehr guter Indikator. (Erinnerung: Dies -cist nicht die Erstellungszeit, sondern die Änderungszeit der Metadaten. In den meisten Unix-Dateisystemen wird die Erstellungszeit einer Datei nicht gespeichert.)
Gilles,

Zeig mir jederzeit was nicht geändert werden kann :)
Jet

Die Frage hatte die Annahme "vorausgesetzt, dass niemand versucht hat, es zu verbergen". Die Uhrzeit von /rootwird sich wahrscheinlich auf natürliche Weise ändern (z. B. jedes Mal, wenn jemand dort eine Datei erstellt).
Gilles

0

Seit einiger Zeit installiere ich in der Regel zur gleichen Zeit wie die Linux-Distribution ein Paket namens Tuptime , das nützliche Statistiken über die Laufzeit, Starts, Shutdowns ... enthält.

Für Ihre Fragen enthält die Zeile "Systemlebensdauer" diese Informationen. Zum Beispiel:

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

Weitere Informationen: https://github.com/rfrail3/tuptime/


0

Das ist ein anderer Weg

# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch                  Tue 11 Jul 2017 03:57:52 PM UTC

-4

Ich habe eine einfache Datei gefunden. Nennen Sie "1". Vielleicht ist die erste Datei.

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1

warum abstimmen. Diesmal wird wirklich auf die zuletzt installierte Systemzeit hingewiesen.
utopic eexpress

Ich habe diese Datei nicht auf meinem Linux.
Kevin Lemaire
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.