Qu'est-ce qu'une méthode distro-agnostique pour déterminer la date d'installation du système d'exploitation?

10

Je suis sur une machine CrunchBang et j'essaie d'écrire un script qui doit avoir la date d'installation du système d'exploitation comme référence.

J'ai recherché et trouvé cette commande:

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

Il imprime

Mar 31 21:24

Je n'ai pas compris la tail -1partie, mais j'ai pu comprendre que 6 $ 7 $ 8 $ sont les 6e 7e 8e occurrences de la dernière ligne à laquelle la commande fait référence.

Cependant, j'ai réalisé que l'année ne pouvait pas être incluse car l'année n'était pas affichée dans la ls -ltccommande.

Certaines personnes ont suggéré que la date a /etcété créée et que certaines ont été vérifiées, /var/log/syslogetc. J'ai pensé que cela pourrait être un peu spécifique à la distribution.

Quelle est votre recommandation pour une méthode vraiment distro-agnostique de trouver la date d'installation du système d'exploitation?

Animesh
la source
1
Pourquoi pensez-vous que /etcla date de création de la vérification est spécifique à la distribution?
Kevin
J'ai récemment lu qu'il existe des distributions qui ont une hiérarchie de système de fichiers différente comme gobolinux et j'avais l'impression qu'il pourrait y avoir plus de distributions similaires à gobolinux.
Animesh
1
Je pense que vérifier / etc est plus portable que supposer un système de fichiers ext. Ou recherchez simplement le répertoire le plus ancien dans /.
Kevin
1
Juste pour être complet, je noterai que la sortie de ls montre le moment où elle a moins de six mois et l'année où elle a plus de six mois.
Random832
@Kevin si vous décompressez une archive tout en préservant les autorisations, le répertoire / fichier le plus ancien peut être bien plus ancien que la date d'installation du système.
scai

Réponses:

8

Si l'hypothèse est que vous avez un système de fichiers ext {2,3,4} et que vous avez formaté le système de fichiers racine lorsque vous avez installé le système d'exploitation (et que vous n'avez pas effectué de mises à niveau à partir d'un autre système d'exploitation sans effacement), vous pouvez utiliser dumpe2fs:

% dumpe2fs -h /dev/mapper/vg_desktop-lv_root 2>&1 |grep 'Filesystem created'
Filesystem created:       Sat Jul 23 04:28:07 2011
jsbillings
la source
La sortie a-t-elle été redirigée vers un emplacement ou un fichier, car rien ne s'est produit lorsque j'ai exécuté la commande.
Animesh
Vous devrez fournir le périphérique pour votre système de fichiers racine, au lieu de / dev / mapper / vg_desktop-lv_root. Vérifiez la sortie de df /pour l'obtenir. Je suis sûr que vous pourriez l'automatiser.
jsbillings
J'ai réalisé que j'avais un _au lieu de -lors de la frappe de la commande. J'ai la date maintenant. Merci.
Animesh
Ou que vous n'avez pas sauvegardé, reformaté et restauré.
psusi
3
Mon système de fichiers est reiserfs. À mon humble avis, la recherche de / etc est une meilleure approche.
utilisateur inconnu
0

Je ne connais aucune méthode formelle pour cela.

Ce que j'ai toujours fait, c'est:

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

Cela crée un fichier nommé 'install-' suivi de la date actuelle (s'il est exécuté aujourd'hui, ce serait install-2012-04-03) et le définit comme immuable, il ne peut donc pas être supprimé par accident.

Ensuite, il suffit de regarder ce fichier pour voir quand le système d'exploitation a été installé.

benjarrell
la source