¿Cómo puedo encontrar el tiempo desde que se instaló un sistema Linux por primera vez, siempre que nadie haya tratado de ocultarlo?
¿Cómo puedo encontrar el tiempo desde que se instaló un sistema Linux por primera vez, siempre que nadie haya tratado de ocultarlo?
Respuestas:
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.
/dev/sda1
o algo así (lo que se df /
muestra en la primera columna), pero el principio es sólido.
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:'
tune2fs -l
Hay algunas fechas por ahí.
En Debian o Ubuntu y sus derivados, vea /var/log/installer/syslog
la 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).
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
rpm -qi
es que me da Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
, mientras tune2fs
dice Filesystem created: Sat Dec 20 23:41:41 2014
?
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 touch
archivos creados por la extracción de archivos (por ejemplo, tar -p
para 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-time
opció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 stat
probable 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 stat
desde GNU Coreutils tiene un tiempo de "Nacimiento" que tiende a ser incorrecto (Linux con ext4 rinde 0
para 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 ls
y es tabú, pero no debería haber archivos con nombres traviesos /etc
).
También puede usar stat
para 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 %Z
es "hora del último cambio de estado", pero esa es la marca correcta para mis sistemas Linux y BSD, como se señaló anteriormente; %W
es la "hora de nacimiento del archivo" ) o stat -f %c FILE
(con BSD).
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.
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.
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 :)
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/hostname
es mejor indicación quetune2fs -l /dev/sda1
ls -alct /root
-> el directorio raíz se crea en el momento de la instalación
/
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: -c
no 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.)
/root
Es probable que el tiempo de c cambie naturalmente (por ejemplo, cada vez que alguien crea un archivo allí).
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/
Esta es otra forma
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
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