Come faccio a sapere da quanto tempo è stato installato un sistema Linux?


97

Come posso trovare il tempo dalla prima installazione di un sistema Linux, a condizione che nessuno abbia tentato di nasconderlo?


Cosa intendi per età?
Let_Me_Be

@Let: il tempo trascorso dalla sua creazione.

1
@ Let: mi aspettavo una risposta sulla falsariga di "controlla il timestamp di / some / oscure / file, non viene mai modificato". Per favore, rispondi.

2
Non è un po 'come chiedere l'età della [nave di Teseo] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu,

2
Quando ogni parte di un'installazione di Linux è stata sostituita nel corso degli anni, è sempre la stessa installazione? (Come l'analogia originale di una nave che ha sostituito lentamente tutte le sue parti) chiedo perché la mia partizione di root ha cambiato dischi e filesystem e la mia partizione di casa è più vecchia di quella. Alcune appliance vengono preparate una volta come immagini gold, quindi ottengono nomi host personalizzati, chiavi host ssh e fs uuids durante la distribuzione. Le immagini d'oro possono essere modificate e congelate di nuovo, come il lignaggio chiavi in ​​mano di Linux.
Tobu,

Risposte:


99
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.


4
Di solito /dev/sda1o qualcosa del genere (qualunque cosa df /mostri nella prima colonna), ma il principio è valido.
Gilles,

1
Ehi, è utile saperlo, grazie. E queste informazioni sopravvivono anche copiando il filesystem. +1.
Faheem Mitha,

4
La soluzione è buona, ma dipende dal filesystem e richiede i privilegi di root.
golem,

7
+1. Tuttavia, devo notare che il mio desktop attuale è stato creato intorno al 1994. Da allora tutto è cambiato più volte (compresi i dischi e il tipo di filesystem che uso) ma è sempre lo stesso sistema. Questo metodo, nella migliore delle ipotesi, mi dirà solo la data dell'ultimo passaggio a un nuovo filesystem.
Cas

Questa non dovrebbe essere la risposta accettata perché funziona solo con ext2 (forse fino a ext4?) Che non uso.
Soger,

23

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:'

1
... oppuretune2fs -l
forcefsck il

2
Hai dimenticato di dire che questo è applicabile solo al filesystem ext2 / ext3 / ext4.
Let_Me_Be

Avresti avuto una data sbagliata su molte delle mie macchine, in cui ho aggiornato i dischi rigidi e ho appena copiato l'installazione.
derobert,

1
@derobert, penso ancora che la mia risposta sarebbe corretta, data la domanda dei PO. Un nuovo disco non è diverso dalla nuova RAM - hai ancora la stessa 'installazione' anche se hai fatto
scoppiare

@pboin No, quando copio l'installazione, è un disco più grande, quindi ripartiziono e mkfs (quindi uso tar / cp per copiarlo, non dd). Potrebbe anche essere un file system diverso (ad esempio ext2 -> ext3 -> ext4) Quindi avrai il tempo di copiare l'installazione. Ecco come potrebbe essere diverso dalla data che OP sta cercando.
derobert,

16

Ci sono alcune date in giro.

  • Tutti i file hanno date.
  • I file di registro contengono date.

Su Debian o Ubuntu e i loro derivati, vedi /var/log/installer/syslogla 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.)


Questo potrebbe essere specifico per Debian / Ubuntu.
Faheem Mitha,

@Faheem Mitha: lo stesso file / directory è usato per Ubuntu.
BillThor,

1
@Bill: Sì, ho detto in modo specifico a Debian / Ubuntu. Significa che la ricetta funzionerebbe sia per Debian che per Ubuntu, ma probabilmente non per altre distribuzioni Linux (non basate su Debian).
Faheem Mitha,

Ma non tutti i file HANNO UNA DATA DI CREAZIONE. La data di nascita di AFAIK è stata introdotta solo in ext4, e comunque non è POSIX.
Konrad Gajewski,

@KonradGajewski Ma in fondo a questa risposta, o ai suoi commenti si menziona la data di creazione del file.
ctrl-alt-delor,

12

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

1
Come rpm -qimai mi dà Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, mentre tune2fsdice Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin,

Nella mia macchina virtuale di Azure tutti hanno lo stesso tempo, quindi rpm non è affatto affidabile
Chris,

10

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 toucho file creati estraendo gli archivi (ad esempio tar -pper 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-timeopzione (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, è statprobabile 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 statda 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 lsed è un tabù, ma non ci dovrebbero essere file maliziosamente nominati /etc.)

È inoltre possibile utilizzare statper 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).


6

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.


4

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.


mattdm ha ragione; è possibile ottenere il tempo di accesso, il tempo di modifica e il tempo di cambio; ctime è l'ultimo. Vedi questo messaggio SO
Michael Mrozek


2

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 :)


2

Ho cercato uno strumento simile e il meglio che potevo inventare era ls -lAhF /etc/hostnamesemplicemente 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


1

Se hai utilizzato LVM durante l'installazione, puoi verificare la data di creazione di un volume logico eseguita il giorno dell'installazione, ad esempio:

$ 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 -> la home directory principale viene creata al momento dell'installazione


1
Ma potrebbe essere cambiato in seguito. Il tempo di attesa /è leggermente meno probabile che cambi se il kernel non viene mantenuto /, ma non è ancora un ottimo indicatore. (Promemoria: -cnon è 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.)
Gilles

mostrami in qualsiasi momento che non può essere modificato :)
jet

La domanda aveva il presupposto "purché nessuno abbia cercato di nasconderlo". /rootÈ probabile che il tempo di c cambi in modo naturale (ad esempio ogni volta che qualcuno crea un file lì).
Gilles

0

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/


0

Questo è un altro modo

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

-4

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

perché downvote. Questa volta è davvero sottolineare l'ultimo tempo di installazione del sistema.
utopic eexpress

Non ho questo file sul mio Linux.
Kevin Lemaire,
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.