Wie kann man das Alter eines Linux-Systems seit der Installation bestimmen?


39

Ich dachte, dass ich den Zeitstempel bestimmter Dateien leicht überprüfen könnte. Dann wurde mir klar, dass es nicht so einfach sein würde, wenn ich solche Zeitstempel sah 1991.


Ich liebe all diese Antworten und habe einige positiv bewertet und daraus gelernt. Ich habe jedoch den Eindruck, dass die Frage nicht genau definiert ist: Meine Colo'ed Box hat beispielsweise in den zehn Jahren, in denen sie ausgeführt wurde, zwei Inkarnationen der Hauptplatine und vier vollständige Änderungen der Festplatte durchlaufen jedes Mal wiederhergestellt. Alle meine öffentlichen ssh-Schlüssel sind vom 19. Februar 2001; Der Root-FS wurde jedoch am 11. Juni 2010, 20:59:01 Uhr erstellt, als der Mobo zuletzt aktualisiert wurde (zusammen mit den Datenträgern). noch andere tests liefern noch andere ergebnisse, und es kommt mir vor: wie definieren sie das alter eines linux-systems (ohne es zu entdecken)?
MadHatter unterstützt Monica am

4
Anscheinend ist dies auch als das Schiff von Theseus-Problem bekannt; siehe en.wikipedia.org/wiki/Ship_of_Theseus .
MadHatter unterstützt Monica am

Ich habe immer eine Festplatte mit einer Partition, die existiert, seit ich die Maschine gekauft habe ... Ich habe alles, was ich zum Sichern benötige, dort abgelegt, wenn ich ein neues Laufwerk kaufe oder eine neue Root-Partition mit frischem Kernel erstelle ... Aber es ist ist mir nicht
eingefallen

Antworten:


47

Der einfachste Weg wäre wahrscheinlich (vorausgesetzt, sda1 ist dein / root /):

tune2fs -l / dev / sda1 | grep erstellt

Dies sollte Ihnen das Datum anzeigen, an dem das Dateisystem erstellt wurde. Bestätigt, um an ext2 bis ext4 zu arbeiten, nicht sicher über andere Dateisysteme!


1
Wenn ich ein neues Laufwerk für meine PCs bekomme, erstelle ich normalerweise Partitionen und übertrage dann die cp -aDaten. Kurz gesagt: Es ist nicht in allen Fällen möglich, das Alter des Systems zu bestimmen.
Hubert Kario

Vielleicht ist die Verwendung /dev/rootetwas allgemeiner.
12.

Ich habe ein neues System über dem vorherigen installiert, wobei der sda1 FS beibehalten wurde, und daher war die Lösung von MihaiM unten (SSH-Schlüssel) genauer.
Ring Ø

14

Ein Mechanismus, den ich häufig verwende, ist das Überprüfen der Änderungszeit (ctime) für Dateien im Stammverzeichnis. Da das /rootBasisverzeichnis zum Zeitpunkt der Installation erstellt und häufig nur selten verwendet wird, kann dies eine relativ gute Annäherung darstellen. Wie Kyle in den Kommentaren klargestellt hat, wird durch das Ändern des Dateiinhalts die Uhrzeit nicht geändert, da sich ctime auf den Inode und nicht auf die Daten bezieht.

Standardmäßig gibt der lsBefehl die Änderungszeit (mtime) der Datei aus. Also, wenn in der ctime-Option wie folgt ersetzen,

ls -alct /root

Dadurch werden alle Dateien gedruckt, die Erstellungszeit angezeigt und nach Zeit sortiert.

Als Beispiel hier ein Beispiel der 3 ältesten Dateien in dem /rootVerzeichnis von einem meiner Systeme.

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

Und dann durch Überprüfen der Änderungszeit

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

Das Datum des 18. Februar 2010 zeigt mit Sicherheit die ungefähre Zeit, zu der ich dieses System zum ersten Mal installiert hätte.


4
ctime ist eigentlich nicht die Erstellungszeit einer Datei, sondern die Änderungszeit. Dies ist das letzte Mal, dass ich die Inode ändere. Wenn Sie die Berechtigungen oder den Eigentümer einer Datei ändern, ändert sich dies. Wahrscheinlich haben sich der Eigentümer oder die Berechtigungen des / root-Ordners selbst nicht geändert, weshalb dies ansteht. (Ich weiß nicht, wofür das c eigentlich steht. Die Single-Unix-Spezifikation hat nur "time_t st_ctime Time of last status change".
Kyle Brandt

Das Datum und die Uhrzeit des Installationsprotokolls. Welche möglicherweise vorhanden sind oder nicht, hängt von Ihrer Distribution / Ihrem Betriebssystem ab.
Koos van den Hout

6

Versuchen

ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6

Die Schlüssel werden bei der Installation des Betriebssystems generiert.


3
Dies ist eine gute Idee. Es wurden jedoch einige Schwachstellen in SSH-Schlüsseln gefunden. Wenn Sie Systemaktualisierungen durchgeführt haben (und Sie sollten Systemaktualisierungen durchführen!), Wurden die Schlüssel neu generiert.
Josh

Exzellente Idee! Wenn der Schlüssel jedoch neu genug ist, lswird das Datum anders angezeigt (zumindest auf meinem Computer), sodass der cutBefehl nicht richtig funktioniert. Ich würde jetzt verwenden stat -c %y /etc/ssh/ssh_host*pub. Außerdem frage ich mich, warum die Erstellung von Dateien unter Linux nicht mehr
Spaß gemacht hat

3

Das Überprüfen der Hardware wäre eine gute Wette, wenn Sie Zugriff darauf haben. Sie können das System und / oder die Hardwarekomponenten überprüfen, um eine gute Vorstellung davon zu erhalten, wann es zusammengebaut wurde.

Wenn Sie auf den BIOS-Bildschirm zugreifen können, werden dort häufig Datumsinformationen angezeigt, anhand derer Sie feststellen können, wie alt ein Computer ist.

Wenn Sie auf die SMART-Informationen auf der Festplatte zugreifen können ( smartctl -a /dev/sda), muss möglicherweise etwas geschehen. Ich sehe keinen bestimmten Zeitstempel in SMART, aber es gibt mindestens einen Betriebsstundenzähler. Dies würde eine niedrigere Grenze für das Alter der Maschine liefern (da das System nicht jünger als 100 Stunden sein kann, wenn die Festplatte 100 Stunden gelaufen ist).

Bei den Dateisystemprüfungen können Sie die Datumsinformationen für /lost+founddas Verzeichnis einsehen, das bei der Erstellung des Dateisystems erstellt wurde. Das Datum sollte mit den Daten der vorherigen Antwort übereinstimmen.


+1 für den /lost+foundHinweis, da diese Informationen nicht privilegierten Benutzern zur Verfügung stehen. Das Ausführen eines Batch-Vorgangs wie tune2fs auf Root-Dateisystemen als Superuser ist etwas beunruhigend. Darüber hinaus funktioniert diese Lösung auf FreeBSD- und Nicht-Ext2 / 3/4-Dateisystemen.
Stefan Lasiewski

3

Mit RedHat und Derivaten ist es ziemlich einfach, sich durch eine Kombination aus Dateialter und anderen Systemdateien einen Überblick über die Betriebssystemversion / den Jahrgang zu verschaffen. Normalerweise überprüfe ich die /root/anaconda-ks.cfgDatei, da sie die anfänglichen Server-Setup- und Paketparameter enthält. Manchmal uname -awerden gute Informationen über das Erstellungsdatum des Kernels vorliegen. Es würde auch eine Gruppe von Dateien mit demselben Datum in geben /etc. In der Regel die Links rcx.d, rc-Skripte, inittab usw.


3

Dies funktioniert auch für Red Hat-Systeme:

rpm -qi basesystem | grep "Install Date"

Beachten Sie, dass dies (und der Trick von tune2fs) bei virtuellen Maschinen weniger gut funktioniert, wenn sie von einem gemeinsamen Image gesponnen werden. Die Überprüfung der SSH-Host-Schlüssel ist jedoch auf meinem Linode korrekt.
cjc
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.