Come posso trovare il tempo dalla prima installazione di un sistema Linux, a condizione che nessuno abbia tentato di nasconderlo?
Come posso trovare il tempo dalla prima installazione di un sistema Linux, a condizione che nessuno abbia tentato di nasconderlo?
Risposte:
tune2fs -l /dev/sda1 **OR** /dev/sdb1* | grep 'Filesystem created:'
Questo ti dirà quando è stato creato il file system.
* = Nella prima colonna df /
puoi trovare la partizione esatta da usare.
/dev/sda1
o qualcosa del genere (qualunque cosa df /
mostri nella prima colonna), ma il principio è valido.
Controlla la data del filesystem di root con dumpe2fs. Non riesco davvero a pensare a come potrebbe essere nient'altro che la data che stai cercando:
dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
tune2fs -l
Ci sono alcune date in giro.
Su Debian o Ubuntu e i loro derivati, vedi /var/log/installer/syslog
la risposta definitiva se esiste fa parte del registro dell'installazione.
Ma attenzione, questo non è garantito. (vedi altre risposte / commenti per alcuni dei motivi per cui potrebbe non funzionare.)
Nelle distribuzioni basate su Red Hat (ad es. CentOS, Scientific, Oracle ecc.) È possibile utilizzare:
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.
o
rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
rpm -qi
mai mi dà Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
, mentre tune2fs
dice Filesystem created: Sat Dec 20 23:41:41 2014
?
La soluzione più neutrale per il filesystem e la distribuzione (che posso trovare) è usare il file più vecchio dato da ls -lact /etc
, che guarda i metadati di ogni file per il momento della creazione. Anche se questo può essere giocato, non è influenzato da touch
o file creati estraendo gli archivi (ad esempio tar -p
per conservare i timestamp).
Penso che sia meglio guardare i file, piuttosto che le directory in quanto le directory non cambiano la loro metadati della fase di creazione in cui i loro contenuti cambiano (forse qualcuno può far luce sul perché?)
ls -lact --full-time /etc |tail
I sistemi che non dispongono di GNU Coreutils dovrebbero rimuovere l' --full-time
opzione (l'ordinamento sarà comunque corretto e otterrai comunque il giorno). Puoi ottenere il tempo di creazione dai metadati di un file con stat FILE |grep Change
(eseguilo sul file più vecchio elencato per ls -lact
).
Su altri sistemi non Linux, è stat
probabile che tali informazioni siano in una disposizione leggermente diversa, che potrebbe richiedere flag diversi. Si noti che questo utilizza ancora i metadati del file e l'accuratezza non è garantita.
Nota anche che stat
da GNU Coreutils ha un tempo di "Nascita" che tende ad essere sbagliato (Linux con rese ext40
per indicare che è sconosciuto, FreeBSD con UFS ha mostrato un tempo di "Nascita" che è più vecchio del sistema che ho richiesto). Il valore corretto è stato elencato come ora "Modifica".
Se vuoi divertirti e ottenere solo il tempo di creazione del file più vecchio in /etc
:
ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'
Questo comando ha funzionato per me su un vecchio sistema FreeBSD (UFS, nessuna utility GNU):
stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'
(Sì, questo analizza ls
ed è un tabù, ma non ci dovrebbero essere file maliziosamente nominati /etc
.)
È inoltre possibile utilizzare stat
per ottenere altri formati di ora. Ad esempio, per ottenere il tempo di creazione in epoca Unix : stat -c %Z FILE
(con GNU, nota che %Z
è "l'ora dell'ultimo cambio di stato" ma che è il flag corretto per i miei sistemi Linux e BSD, come notato sopra; %W
è il "tempo di nascita del file" ) o stat -f %c FILE
(con BSD).
In Fedora, il programma di installazione di anaconda memorizza i dettagli di configurazione dell'installazione nella cartella principale di root, che può darti un'idea.
Su Debian (almeno quelli più recenti), sono memorizzati diversi log dall'installazione /var/log/installer/
. Le versioni precedenti le hanno archiviate /var/log/installer.*
. Questo è almeno il 2003.
Come richiesto dall'OP.
Se stai cercando l'ora, quando il sistema è stato installato, non c'è modo di determinarlo. Per uno, il sistema potrebbe essere stato clonato (non installato), il che falserebbe effettivamente il tempo di creazione del file.
È possibile stimare l'età cercando i file più vecchi.
Guardo il file più vecchio in / boot (all'inizio di "ls -ltr / boot". Spesso c'è un settore di avvio originale dalla prima installazione lì. Sul mio sistema più vecchio questo dà la data dell'installazione originale, nonostante abbia sostituito tutto in la macchina e copiato il contenuto del file system alcune volte :)
Ho cercato uno strumento simile e il meglio che potevo inventare era ls -lAhF /etc/hostname
semplicemente l'età del file hostname. Penso, in generale, il nome host di un sistema sia impostato all'inizio e lasciato invariato durante la vita del sistema. La data di creazione del filesystem è sicuramente utile, ma può essere fuorviante. Ad esempio, utilizzo spesso l'immagine di macchine virtuali, che ho installato qualche tempo fa, la copio, cambio il nome host e ne ricavo un nuovo server. Pertanto, nel mio caso /etc/hostname
è un'indicazione migliore ditune2fs -l /dev/sda1
ls -alct /root
-> la home directory principale viene creata al momento dell'installazione
/
è leggermente meno probabile che cambi se il kernel non viene mantenuto /
, ma non è ancora un ottimo indicatore. (Promemoria: -c
non è l'ora di creazione, è l'ora di cambio dei metadati. La maggior parte dei filesystem unix non memorizza l'ora di creazione di un file.)
/root
È probabile che il tempo di c cambi in modo naturale (ad esempio ogni volta che qualcuno crea un file lì).
Da tempo, di solito installo al tempo stesso che la distribuzione Linux un pacchetto chiamato Tuptime , che mantiene utili statistiche su tempo di esecuzione, avviamenti, arresti ...
Per le tue domande, la riga "Durata del sistema" contiene tali informazioni. Per esempio:
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
Maggiori informazioni: https://github.com/rfrail3/tuptime/
Questo è un altro modo
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
Ho trovato un semplice file. nome "1". Forse è il primo file.
▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1