¿Cuál es una forma de distribución independiente de la fecha de instalación del sistema operativo?

10

Estoy en una máquina CrunchBang e intento escribir un script que necesita tener la fecha de instalación del sistema operativo como referencia.

Busqué y encontré este comando:

ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'

Imprime

Mar 31 21:24

No entendí la tail -1parte, pero pude darme cuenta de que $ 6 $ 7 $ 8 son las ocurrencias 6th 7th 8th de la última línea a la que hace referencia el comando.

Sin embargo, me di cuenta de que el año no se puede incluir ya que el año no se mostró en el ls -ltccomando.

Algunas personas sugirieron que /etcse creara la fecha y algunos revisaran el /var/log/syslogetc. Pensé que esto podría ser un poco específico para la distribución.

¿Cuál es su recomendación para una forma verdaderamente independiente de la fecha de instalación del sistema operativo?

Animesh
fuente
1
¿Por qué crees que /etcla fecha de creación de la comprobación es específica de la distribución?
Kevin
Recientemente leí que hay algunas distribuciones que tienen una jerarquía de sistema de archivos diferente como gobolinux y tenía la impresión de que podría haber más distribuciones similares a gobolinux.
Animesh
1
Creo que verificar / etc es más portátil que asumir un sistema de archivos ext. O simplemente busque el directorio más antiguo en /.
Kevin
1
Solo para completar, notaré que la salida de ls muestra el tiempo cuando tiene menos de seis meses y el año cuando tiene más de seis meses.
Random832
@Kevin si desempaqueta un archivo mientras conserva los permisos, el directorio / archivo más antiguo puede ser mucho más antiguo que la fecha de instalación del sistema.
scai

Respuestas:

8

Si se supone que tiene un sistema de archivos ext {2,3,4} y formateó el sistema de archivos raíz cuando instaló el sistema operativo (y no realizó actualizaciones desde otro sistema operativo sin borrar), puede usar dumpe2fs:

% dumpe2fs -h /dev/mapper/vg_desktop-lv_root 2>&1 |grep 'Filesystem created'
Filesystem created:       Sat Jul 23 04:28:07 2011
jsbillings
fuente
¿Se estaba redirigiendo la salida a algún lugar o a un archivo?
Animesh
Tendrá que suministrar el dispositivo para su sistema de archivos raíz, en lugar de / dev / mapper / vg_desktop-lv_root. Verifique la salida de df /para obtenerlo. Estoy seguro de que podrías automatizarlo.
jsbillings
Me di cuenta de que tenía un en _lugar de -cuando escribía el comando. Tengo la fecha ahora. Gracias.
Animesh
O que no hiciste copia de seguridad, reformatear y restaurar.
psusi
3
Mi sistema de archivos es reiserfs. En mi humilde opinión, buscar / etc es un mejor enfoque.
Usuario desconocido
0

No conozco ningún método formal para esto.

Lo que siempre he hecho es:

touch /install-`date +"%F"` && chattr +i /install-20*

Eso crea un archivo llamado 'install-' seguido de la fecha actual (si se ejecuta hoy sería install-2012-04-03) y lo establece como inmutable, por lo que no se puede eliminar por accidente.

Entonces es solo una cuestión de mirar ese archivo para ver cuándo se instaló el sistema operativo.

benjarrell
fuente