Come determinare l '"età" di un sistema Linux dall'installazione?


39

Ho pensato di poter facilmente controllare il timestamp di determinati file. Poi ho capito che non sarebbe stato così facile quando ho visto i timestamp come 1991.


Adoro tutte queste risposte, ne ho votate alcune e ho imparato da esse. Ma mi viene in mente che la domanda non è ben definita: per esempio, la mia scatola colorata ha attraversato due incarnazioni della scheda madre e quattro cambi completi di HDD nei dieci anni in cui è stata eseguita, con il FS in fase di scarico | restaurato ogni volta. Tutte le mie chiavi pubbliche ssh sono datate 19 febbraio 2001; ma il root FS è stato creato l'11 giugno 2010, 20:59:01, quando il mobo è stato aggiornato l'ultima volta (insieme ai dischi); eppure altri test danno risultati ancora diversi, e mi viene in mente: come si definisce (non si scopre) l'età di un sistema Linux?
MadHatter supporta Monica il

4
Apparentemente questo è anche noto come problema della nave di Teseo; vedi en.wikipedia.org/wiki/Ship_of_Theseus .
MadHatter supporta Monica il

Ho sempre un hdd con una partizione esistente da quando ho comprato la macchina ... Ho messo tutte le cose di cui ho bisogno per eseguire il backup lì quando compro una nuova unità o creo una nuova partizione di root con kernel nuovo ... Ma non mi è
venuto

Risposte:


47

Il modo più semplice sarebbe probabilmente (presumendo che sda1 sia il tuo / root /):

tune2fs -l / dev / sda1 | grep creato

Questo dovrebbe mostrare la data in cui è stato creato il file system. Confermato di funzionare da ext2 a ext4, non sono sicuro di altri file system!


1
Quando ricevo una nuova unità per i miei PC, di solito creo delle partizioni su di esso e quindi i cp -adati. Quindi in breve: non è possibile determinare l'età del sistema in tutti i casi.
Hubert Kario,

Forse l'utilizzo /dev/rootè un po 'più generale.
Camh,

Ho installato un nuovo sistema rispetto al precedente, mantenendo l'Sda1 FS, e quindi la soluzione di MihaiM di seguito (chiavi ssh) era più accurata.
Anello Ø

14

Un meccanismo che uso spesso è controllare il tempo di modifica (ctime) sui file all'interno della directory principale di root. Poiché la /rootdirectory home viene creata al momento dell'installazione e viene spesso utilizzata di rado, ciò può fornire un'approssimazione relativamente buona. Come chiarito da Kyle nei commenti, poiché ctime si riferisce all'inode, e non ai dati, la modifica del contenuto del file non cambierà il ctime.

Per impostazione predefinita, il lscomando stampa il tempo di modifica (mtime) del file. Quindi se sostituisci l'opzione ctime in questo modo,

ls -alct /root

Questo stamperà tutti i file, visualizzerà l'ora di creazione e ordinerà per ora.

Ad esempio, ecco un esempio dei 3 file più vecchi nella /rootdirectory di uno dei miei sistemi.

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

E poi controllando il tempo di cambio

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

La data del 18 febbraio 2010 segue sicuramente il tempo approssimativo in cui avrei installato il sistema per la prima volta.


4
ctime non è in realtà il tempo di creazione di un file, ma piuttosto è il tempo di modifica. Questa è l'ultima volta che ho apportato modifiche all'inode. Se si modificano le autorizzazioni o il proprietario di un file, ciò cambierebbe. È probabile che il proprietario o le autorizzazioni della cartella / root non siano cambiate, motivo per cui questo è in coda. (Non so che cosa effettivamente stia per la c - La specifica single unix ha solo "time_t st_ctime Ora dell'ultimo cambio di stato".
Kyle Brandt,

In effetti, la data / ora del registro dell'installer. Che può essere o meno presente a seconda della tua distribuzione / SO.
Koos van den Hout,

6

provare

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

le chiavi vengono generate quando si installa il sistema operativo.


3
Questa è una buona idea, tuttavia sono stati riscontrati alcuni punti deboli nelle chiavi SSH e se avessi fatto aggiornamenti di sistema (e dovresti fare aggiornamenti di sistema!) Le chiavi sarebbero state rigenerate.
Josh,

Ottima idea! Tuttavia, se la chiave è abbastanza nuova, lsmostra la data in modo diverso (almeno sulla mia macchina), quindi il cutcomando non funziona correttamente. Vorrei ora usare stat -c %y /etc/ssh/ssh_host*pub. Inoltre, mi chiedo perché i tempi di creazione dei file non abbiano avuto più amore su Linux ...
Rennex,

3

Controllare l'hardware sarebbe una buona scommessa, se si ha accesso ad esso. È possibile ispezionare i componenti di sistema e / o hardware per avere una buona idea di quando è stato assemblato.

In alternativa, se riesci ad accedere alla schermata del BIOS ci sono spesso informazioni sulla data che possono essere utilizzate per determinare quanti anni ha una macchina.

Se riesci ad accedere alle informazioni SMART sul disco rigido ( smartctl -a /dev/sda), potrebbe esserci qualcosa da fare. Non vedo un timestamp specifico in SMART ma c'è almeno un'ora di contatore dell'utilizzo. Ciò fornirebbe un limite inferiore sull'età della macchina (poiché se il disco rigido è in funzione da 100 ore, il sistema non può essere più giovane di 100 ore).

Per quanto riguarda i controlli del filesystem, puoi guardare le informazioni sulla data per /lost+found- quella directory è stata creata quando è stato creato il filesystem. La data su di essa dovrebbe concordare con le informazioni sui brani della risposta precedente.


+1 per il /lost+foundsuggerimento, poiché queste informazioni sono disponibili per gli utenti non privilegiati. Eseguire un'operazione batch come tune2fs sui filesystem di root in quanto il superutente è un po 'preoccupante. Inoltre, questa soluzione funziona su file system FreeBSD e non ext2 / 3/4.
Stefan Lasiewski,

3

Con RedHat e derivati, è abbastanza facile avere un'idea generale della versione del sistema operativo / vintage attraverso una combinazione di età dei file e altri file di sistema. Di solito controllerò il /root/anaconda-ks.cfgfile, poiché contiene i parametri iniziali di configurazione del server e del pacchetto. A volte uname -aavrà buone informazioni sulla data di compilazione del kernel. Ci sarebbe anche un cluster di file con la stessa data in /etc; in genere i collegamenti rcx.d, gli script rc, inittab, ecc.


3

Questo funziona anche con i sistemi Red Hat:

rpm -qi basesystem | grep "Install Date"

Si noti che questo (e il trucco di tune2fs) funziona meno bene con le macchine virtuali, se vengono scartate da un'immagine comune. Il controllo delle chiavi dell'host ssh è accurato sul mio Linode, comunque.
cjc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.