Comment puis-je trouver le temps écoulé depuis la première installation d'un système Linux, à condition que personne n'ait essayé de le cacher?
tune2fs -l /dev/sda1 **OR** /dev/sdb1* | grep 'Filesystem created:'
Cela vous indiquera quand le système de fichiers a été créé.
* = Dans la première colonne de df /
vous pouvez trouver la partition exacte à utiliser.
Vérifiez la date du système de fichiers racine avec dumpe2fs. Je ne peux pas vraiment penser à comment cela pourrait être autre chose que la date que vous recherchez:
dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
Il y a quelques dates qui traînent.
Sur Debian ou Ubuntu et leurs dérivés, voir /var/log/installer/syslog
pour la réponse définitive si elle existe elle fait partie du log de l'instillation.
Mais attention, ce n'est pas garanti. (Voir d'autres réponses/commentaires pour certaines des raisons pour lesquelles cela peut ne pas fonctionner.)
Sur les distributions basées sur Red Hat (par exemple CentOS, Scientific, Oracle, etc.), vous pouvez utiliser:
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.
ou
rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
La solution la plus neutre vis-à-vis du système de fichiers et de la distribution (que je peux trouver) est d'utiliser le fichier le plus ancien donné par ls -lact /etc
, qui examine les métadonnées de chaque fichier pour l'heure de création. Bien que cela puisse être joué, il n'est pas affecté par touch
ou les fichiers créés en extrayant des archives (par exemple tar -p
pour conserver les horodatages).
Je pense qu'il est préférable de regarder les fichiers plutôt que les répertoires car les répertoires modifient leurs métadonnées de temps de création lorsque leur contenu change (peut-être que quelqu'un peut faire la lumière sur pourquoi cela est?)
ls -lact --full-time /etc |tail
Les systèmes qui manquent GNU Coreutils devraient supprimer le --full-time
option (l'ordre de tri sera toujours correct et vous aurez toujours le jour). Vous pouvez obtenir l'heure de création à partir des métadonnées d'un fichier avec stat FILE |grep Change
(exécutez-le sur le fichier le plus ancien répertorié par ls -lact
).
Sur d'autres systèmes non Linux, stat
a probablement ces informations dans une disposition légèrement différente, nécessitant éventuellement des drapeaux différents. Notez que cela utilise toujours les métadonnées du fichier et que la précision n'est pas garantie.
Notez également que stat
de GNU Coreutils a une heure de "naissance" qui a tendance à être erronée (Linux avec ext4 donne 0
pour indiquer qu'il est inconnu, FreeBSD avec UFS a montré une heure de "Naissance" plus ancienne que le système que j'ai interrogé). La valeur correcte a été répertoriée comme son heure de "modification".
Si vous voulez obtenir de la fantaisie et obtenir juste l'heure de création du fichier le plus ancien dans/etc
:
ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'
Cette commande a fonctionné pour moi sur un ancien système FreeBSD (UFS, pas GNU utils):
stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'
(Oui, cela analyse ls
et c'est tabou, mais il ne devrait pas y avoir de fichiers mal nommés dans /etc
.)
Vous pouvez également utiliser stat
pour obtenir d'autres formats d'heure. Par exemple, pour obtenir l'heure de création dans Epoque Unix : stat -c %Z FILE
(avec GNU, notez que %Z
est "l'heure du dernier changement d'état" mais c'est le bon indicateur pour mes systèmes Linux et BSD, comme indiqué ci-dessus; %W
est le "moment de la naissance du fichier") ou stat -f %c FILE
(avec BSD).
Dans Fedora, le programme d'installation anaconda stocke les détails de configuration de votre installation dans le dossier principal de root, ce qui peut vous donner une idée.
Sur Debian (au moins les plus récents), plusieurs journaux de l'installation sont stockés dans /var/log/installer/
. Les anciennes versions les stockaient dans /var/log/installer.*
. Cela remonte au moins à 2003.
Comme demandé par OP.
Si vous recherchez l'heure, lorsque le système a été configuré, il n'y a aucun moyen de le déterminer. D'une part, le système peut avoir été cloné (non installé), ce qui aurait pour effet de simuler le temps de création du fichier.
Vous pouvez estimer l'âge en recherchant les fichiers les plus anciens.
Je cherchais un outil similaire, et le meilleur que j'ai pu trouver était ls -lAhF /etc/hostname
, simplement l'âge du fichier de nom d'hôte. Je pense que, généralement, le nom d'hôte d'un système est défini au début et est resté inchangé pendant la durée de vie du système. La date de création du système de fichiers est certes utile, mais peut être trompeuse. Par exemple, j'utilise souvent l'image de machines virtuelles, que j'ai installée il y a quelque temps, je la copie, je change le nom d'hôte et j'en fais un nouveau serveur. Par conséquent, dans mon cas /etc/hostname
est une meilleure indication que tune2fs -l /dev/sda1
Je regarde le fichier le plus ancien dans/boot (en haut de "ls -ltr/boot". Souvent, il y a un secteur de démarrage d'origine à partir de la première installation là-bas. Sur mon système le plus ancien, cela donne la date de l'installation d'origine, bien qu'il ait tout remplacé dans la machine et copié le contenu du système de fichiers plusieurs fois :)
ls -alct /|tail -1|awk '{print $6, $7, $8}'
Si vous avez utilisé LVM lors de l'installation, vous pouvez vérifier la date de création d'un volume logique effectué le jour de l'installation, exemple:
$ Sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
LV Creation Host, time kubuntu, 2014-12-28 20:52:15 +0100
ls -alct /root
-> le répertoire personnel racine est créé au moment de l'installation
Veuillez exécuter comme suit:
Et puis utilisez la commande ci-dessous.
Le traitement des machines virtuelles, une partie du système de fichiers, etc. ont été créés lors de la création de l'image, peut prendre longtemps avant la création de l'instance.
L'horodatage sur /etc/locale.conf
semble modifié au démarrage de l'instance lors de la création de l'instance. Cela peut être un bon moment à utiliser, sauf si les paramètres régionaux sont modifiés ultérieurement.
Le /etc/hostname
est similaire, sauf que nous le modifions dans certaines situations.
Une idée des autres fichiers modifiés lors de la création d'une instance mais non modifiés par la suite?
Depuis un certain temps, j'installe généralement au moment sime que la distribution linux un package appelé Tuptime , qui conserve des statistiques utiles sur le temps d'exécution, les démarrages, arrêts ...
Pour vos questions, la ligne "Durée de vie du système" contient ces informations. Comme exemple:
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
Plus d'informations: https://github.com/rfrail3/tuptime/
C'est une autre façon
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC