¿Cómo encuentro cuánto tiempo hace que se instaló un sistema Linux?

97

¿Cómo puedo encontrar el tiempo desde que se instaló un sistema Linux por primera vez, siempre que nadie haya tratado de ocultarlo?

mattdm
fuente
¿Qué quieres decir con edad?
Let_Me_Be
@Let: El tiempo desde que se configuró.
1
@Dejar: esperaba una respuesta en la línea de "compruebe la marca de tiempo de / some / oscure / file, nunca se modifica". Por favor, que sea una respuesta.
2
¿No es un poco como preguntar la edad de [la nave de Teseo] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu
2
Cuando cada parte de una instalación de Linux ha sido reemplazada a lo largo de los años, ¿sigue siendo la misma instalación? (Igual que la analogía original de un barco que tenía todas sus partes reemplazadas lentamente), pregunto porque mi partición raíz ha cambiado los discos y los sistemas de archivos, y la partición de mi casa es más antigua que eso. Algunos dispositivos se preparan una vez como imágenes doradas, luego se obtienen nombres de host personalizados, claves de host ssh y fs uuids en la implementación. Las imágenes doradas pueden modificarse y congelarse nuevamente, como el linaje Linux llave en mano.
Tobu

Respuestas:

99
tune2fs -l /dev/sda1 **OR** /dev/sdb1*  | grep 'Filesystem created:'

Esto le dirá cuándo se creó el sistema de archivos.

* = En la primera columna de df /usted puede encontrar la partición exacta para usar.

RailOcelot
fuente
44
Por lo general, /dev/sda1o algo así (lo que se df /muestra en la primera columna), pero el principio es sólido.
Gilles
1
Oye, es útil saberlo, gracias. Y esta información sobrevive copiando el sistema de archivos también. +1.
Faheem Mitha
44
La solución es buena, pero depende del sistema de archivos y requiere privilegios de root.
Golem
77
+1. Sin embargo, tengo que tener en cuenta que mi escritorio actual fue creado alrededor de 1994. Absolutamente todo ha cambiado varias veces desde entonces (incluidos los discos y el tipo de sistema de archivos que uso), pero sigue siendo el mismo sistema. Este método solo, en el mejor de los casos, me indicará la fecha del traslado más reciente a un nuevo sistema de archivos.
cas
Esta no debería ser la respuesta aceptada porque solo funciona con ext2 (¿tal vez hasta ext4?) Que no uso.
soger
23

Verifique la fecha del sistema de archivos raíz con dumpe2fs. Realmente no puedo pensar en cómo podría ser otra cosa que la fecha que estás buscando:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
pboin
fuente
1
... otune2fs -l
forcefsck
2
Olvidó mencionar que esto solo es aplicable al sistema de archivos ext2 / ext3 / ext4.
Let_Me_Be
Obtendría la fecha incorrecta en varias de mis máquinas, donde actualicé los discos duros y simplemente copié la instalación.
derobert
1
@derobert, sigo pensando que mi respuesta sería correcta, dada la pregunta de los OP. Un nuevo disco no es diferente de cualquier nueva RAM - que todavía tiene la misma 'instalación' a pesar de que hizo estallar un nuevo disco en ...
pboin
@pboin No, cuando copio la instalación, es un disco más grande, así que particiono y mkfs (luego uso tar / cp para copiarlo, no dd). Incluso puede ser un sistema de archivos diferente (p. Ej., Ext2 -> ext3 -> ext4) Para obtener el momento en que copié la instalación. Así es como podría ser diferente a la fecha que OP está buscando.
derobert
16

Hay algunas fechas por ahí.

  • Todos los archivos tienen fechas.
  • Los archivos de registro tienen fechas en ellos.

En Debian o Ubuntu y sus derivados, vea /var/log/installer/syslogla respuesta definitiva si existe es parte del registro de la instilación.

Pero cuidado, esto no está garantizado. (Vea otras respuestas / comentarios para algunas de las razones por las que puede no funcionar).

ctrl-alt-delor
fuente
Sin embargo, esto podría ser específico de Debian / Ubuntu.
Faheem Mitha
@Faheem Mitha: el mismo archivo / directorio se utiliza para Ubuntu.
BillThor
1
@Bill: Sí, dije específico para Debian / Ubuntu. Lo que significa que la receta funcionaría tanto para Debian como para Ubuntu, pero posiblemente no para otras distribuciones de Linux (no basadas en Debian).
Faheem Mitha
Pero no todos los archivos TIENEN UNA FECHA DE CREACIÓN. La fecha de nacimiento de AFAIK solo se introdujo en ext4, y eso no es POSIX de todos modos.
Konrad Gajewski, el
@KonradGajewski Pero en esta respuesta, o en cualquiera de sus comentarios, se menciona la fecha de creación del archivo.
ctrl-alt-delor
12

En las distribuciones basadas en Red Hat (por ejemplo, CentOS, Scientific, Oracle, etc.) puede usar:

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
el_viejillo
fuente
1
¿Cómo rpm -qies que me da Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, mientras tune2fsdice Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin
En mi máquina virtual de Azure, todos tienen el mismo tiempo, por lo que las rpm no son confiables en absoluto
Chris
10

La solución más neutral para el sistema de archivos y la distribución (que se me ocurre) es usar el archivo más antiguo proporcionado por ls -lact /etc, que examina los metadatos de cada archivo para el tiempo de creación. Si bien esto se puede jugar, no se ve afectado por toucharchivos creados por la extracción de archivos (por ejemplo, tar -ppara preservar las marcas de tiempo).

Creo que lo mejor es mirar en los archivos en lugar de directorios desde directorios no cambian de metadatos de tiempo de la creación, cuando cambian su contenido (tal vez alguien puede arrojar luz sobre por qué es así?)

ls -lact --full-time /etc |tail

Los sistemas que carecen de GNU Coreutils deberían eliminar la --full-timeopción (el orden de clasificación seguirá siendo correcto y todavía obtendrá el día). Puede obtener el tiempo de creación de los metadatos de un archivo con stat FILE |grep Change(ejecútelo en el archivo más antiguo listado por ls -lact).

En otros sistemas que no son Linux, es statprobable que tenga esa información en una disposición ligeramente diferente, que posiblemente requiera diferentes indicadores. Tenga en cuenta que esto todavía utiliza los metadatos del archivo y no se garantiza la precisión.

También tenga en cuenta que statdesde GNU Coreutils tiene un tiempo de "Nacimiento" que tiende a ser incorrecto (Linux con ext4 rinde 0para indicar que es desconocido, FreeBSD con UFS mostró un tiempo de "Nacimiento" que es más antiguo que el sistema que consulté). El valor correcto figuraba como su tiempo de "Cambio".

Si quieres ponerte elegante y obtener solo el tiempo de creación del archivo más antiguo en /etc:

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'

Este comando funcionó para mí en un viejo sistema FreeBSD (UFS, sin utilidades GNU):

stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'

(Sí, esto analiza lsy es tabú, pero no debería haber archivos con nombres traviesos /etc).

También puede usar statpara obtener otros formatos de hora. Por ejemplo, para obtener el tiempo de creación en Unix epoch : stat -c %Z FILE(con GNU, tenga en cuenta que %Zes "hora del último cambio de estado", pero esa es la marca correcta para mis sistemas Linux y BSD, como se señaló anteriormente; %Wes la "hora de nacimiento del archivo" ) o stat -f %c FILE(con BSD).

Adam Katz
fuente
6

En Fedora, el instalador de anaconda almacena los detalles de configuración de su instalación en la carpeta de inicio de la raíz, que pueden darle una idea.

En Debian (al menos los más recientes), se almacenan varios registros de la instalación /var/log/installer/. Las versiones anteriores las almacenaban /var/log/installer.*. Eso es al menos de vuelta al 2003.

rajaganesh87
fuente
4

Según lo solicitado por OP.

Si está buscando la hora, cuando se configuró el sistema, no hay forma de determinarlo. Por un lado, el sistema podría haber sido clonado (no instalado), lo que falsificaría efectivamente el tiempo de creación del archivo.

Puede estimar la edad buscando los archivos más antiguos.

Déjame ser
fuente
mattdm tiene razón; puede obtener el tiempo de acceso, el tiempo de modificación y el tiempo de cambio; ctime es el último. Ver esta publicación SO
Michael Mrozek
4
ls -alct /|tail -1|awk '{print $6, $7, $8}'
altmas5
fuente
2

Miro el archivo más antiguo en / boot (parte superior de "ls -ltr / boot". A menudo hay un sector de arranque original desde la primera instalación allí. En mi sistema más antiguo esto da la fecha de instalación original, a pesar de haber reemplazado todo en la máquina y copió el contenido del sistema de archivos varias veces :)

pjc50
fuente
2

He estado buscando una herramienta similar, y lo mejor que pude encontrar fue ls -lAhF /etc/hostname, simplemente, la edad del archivo de nombre de host. Creo que, generalmente, el nombre de host de un sistema se establece al principio y no se modifica durante la vida útil del sistema. La fecha de creación del sistema de archivos es ciertamente útil, pero puede ser engañosa. Yo, por ejemplo, a menudo uso la imagen de máquinas virtuales, que instalé hace algún tiempo, la copio, cambio el nombre de host y hago un nuevo servidor. Por lo tanto, en mi caso /etc/hostnamees mejor indicación quetune2fs -l /dev/sda1

usuario1968963
fuente
1

Si usó LVM durante la instalación, puede verificar la fecha de creación de un Volumen lógico realizado el día de la instalación, por ejemplo:

$ sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
  LV Creation host, time kubuntu, 2014-12-28 20:52:15 +0100
SebMa
fuente
0

ls -alct /root -> el directorio raíz se crea en el momento de la instalación

chorro
fuente
1
Pero podría haber cambiado después. /Es menos probable que el tiempo transcurrido haya cambiado si no se mantiene el núcleo /, pero todavía no es un indicador muy bueno. (Recordatorio: -cno es el tiempo de creación, es el tiempo de cambio de metadatos. La mayoría de los sistemas de archivos Unix no almacenan el tiempo de creación de un archivo.)
Gilles
muéstrame cualquier momento que no se pueda cambiar :)
jet
La pregunta tenía el supuesto "siempre que nadie haya tratado de ocultarlo". /rootEs probable que el tiempo de c cambie naturalmente (por ejemplo, cada vez que alguien crea un archivo allí).
Gilles
0

Desde hace un tiempo, generalmente instalo en el momento en que la distribución de Linux un paquete llamado Tuptime , que mantiene estadísticas útiles sobre el tiempo de ejecución, los inicios, las paradas ...

Para sus preguntas, la línea "Vida del sistema" tiene esa información. Como ejemplo:

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

Más información: https://github.com/rfrail3/tuptime/

Rfraile
fuente
0

Esta es otra forma

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

Encontré un archivo simple. nombre "1". Quizás sea el primer archivo.

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1
eexpress utópico
fuente
¿Por qué rechazar? Esta vez es realmente señalar el último tiempo de instalación del sistema.
utópico eexpress
No tengo este archivo en mi Linux.
Kevin Lemaire