Wie kann ich die Zeit seit der Erstinstallation eines Linux-Systems ermitteln, sofern noch niemand versucht hat, sie zu verbergen?
Wie kann ich die Zeit seit der Erstinstallation eines Linux-Systems ermitteln, sofern noch niemand versucht hat, sie zu verbergen?
Antworten:
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.
/dev/sda1
oder so ähnlich (was auch immer df /
in der ersten Spalte gezeigt wird), aber das Prinzip ist Ton.
Ü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:'
tune2fs -l
Es liegen ein paar Datteln herum.
Unter Debian oder Ubuntu und ihren Derivaten finden Sie /var/log/installer/syslog
die 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.)
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
rpm -qi
gibt mir Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
dabei tune2fs
sagt Filesystem created: Sat Dec 20 23:41:41 2014
?
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 touch
Dateien betroffen , die durch das Extrahieren von Archiven erstellt wurden (z. B. tar -p
um 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-time
Option 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 stat
haben 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 stat
GNU Coreutils eine "Geburts" -Zeit hat, die tendenziell falsch ist (Linux mit ext4 gibt 0
an, 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 ls
und 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 %Z
es 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 %W
ist die "Zeit der Dateigeburt". ) oder stat -f %c FILE
(mit BSD).
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.
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.
Ich habe nach einem ähnlichen Tool gesucht und das Beste, was ich mir einfallen lassen konnte, war ls -lAhF /etc/hostname
einfach 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/hostname
eine bessere Indikation alstune2fs -l /dev/sda1
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
ls -alct /root
-> Das Stammverzeichnis wird bei der Installation erstellt
/
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 -c
ist nicht die Erstellungszeit, sondern die Änderungszeit der Metadaten. In den meisten Unix-Dateisystemen wird die Erstellungszeit einer Datei nicht gespeichert.)
/root
wird sich wahrscheinlich auf natürliche Weise ändern (z. B. jedes Mal, wenn jemand dort eine Datei erstellt).
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/
Das ist ein anderer Weg
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
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