Je dois trouver la dernière fois que le
apt-get update
La commande a été exécutée sur mon serveur. Comment puis-je déterminer ces informations?
Au moins dans les systèmes Ubuntu, il existe un fichier /etc/apt/apt.conf.d/15update-stamp contenant:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Donc, voyez si vous avez / var / lib / apt / periodic / update-success-stamp et si vous l'avez, vous pouvez utiliser
stat -c %y /var/lib/apt/periodic/update-success-stamp
pour obtenir l'heure de la dernière invocation "apt-get update".
Et si votre système n'a pas ce fichier de configuration apt, vous pouvez toujours l'ajouter.
/var/lib/apt/periodic/update-stamp
Vous pouvez vérifier les temps d'accès sur les fichiers dans / var / lib / apt / lists qui sont mis à jour lorsque vous exécutez la mise à jour apt-get. Si la mise à jour apt-get a été exécutée avec sudo, vous devriez avoir une ligne connectée dans /var/log/auth.log quand cela a été fait.
la source
Un
apt-get update
ne peut pas créer ou mettre à jour des fichiers, il met à jour le répertoire de cache afin que nous puissions l'utiliser pour obtenir l'horodatage lorsque le dernier aapt-get update
été exécuté:la source
apt-get update
Ne vous éloignez pas des fichiers de verrouillage. Les fichiers de verrouillage ne sont pas fiables, ils ont tendance à se déplacer avec le temps avec les nouvelles versions de Linux, et de nombreux programmes nettoient (suppriment) les fichiers de verrouillage lorsqu'ils en ont fini avec eux.
La commande suivante vous obtiendra ce que vous recherchez.
Il s'agit de deux commandes en une. Les résultats du premier filtre de commande dans le second via le symbole de canal (|).
Dans la première commande, j'utilise "ls" pour répertorier le contenu du fichier du répertoire / var / log / apt, qui est le répertoire qui stocke les journaux d'historique d'accès pour apt-get. La partie "-lt" est en fait deux commutateurs. Le premier commutateur "l" indique à "ls" de répertorier un fichier par ligne avec des détails. Le deuxième commutateur "t" indique à "ls" de trier par date et heure. "--time-style" force l'affichage de la date et de l'heure au format "AAAA-MM-JJ HH: MM".
Dans la partie "grep" de la commande, le commutateur "-o" indique à grep de n'afficher que les parties de chaque ligne qui correspondent exactement à l'expression régulière. L'expression régulière que j'ai utilisée ici détecte les heures de date au format spécifié dans la commande "ls". Vous remarquerez également le vrai petit morceau de magie à la toute fin de la commande "grep" qu'il y a un commutateur "-m" avec le numéro "1" immédiatement après. Cela indique à "grep" d'arrêter de rechercher des correspondances après avoir trouvé la première.
Donc, en résumé, nous listons les détails du fichier journal apt afin que nous puissions voir la dernière date modifiée, nous trions ensuite par date et demandons à grep de retirer la première date du haut, qu'elle renvoie ensuite. C'est la dernière date à laquelle apt-get s'est déroulée.
Pour jouer l'avocat du diable pendant un moment, cependant, il est courant que les plateformes Debian comme Ubuntu planifient apt-get comme un travail qui s'exécute régulièrement. Si vous recherchez la personne à l'autre bout de l'exécution apt-get, vous pouvez en fait trouver une machine. Vous pouvez toujours faire correspondre les journaux d'accès avec les journaux apt pour voir si des horodatages coïncident. Il est également possible de consulter l'historique des commandes d'un utilisateur dans une certaine mesure.
J'espère que cela t'aides!
la source
/var/log/apt
est également enregistré lorsque je fais par exemple unapt-get install some-package
. En fait, sur Ubuntu, il n'enregistre pas quelque chose quand je le faisapt-get update
Je soupçonne que vous pouvez vérifier les dernières heures modifiées sur les fichiers / var / cache / apt pour savoir quand les dernières mises à jour ont été appliquées aux listes de paquets.
Je viens de tester cela et j'ai exécuté "sudo apt-get update" deux fois de suite, et les dates n'ont pas changé par rapport à leur valeur actuelle, mais je pense que c'est parce qu'il n'y avait pas de nouvelles mises à jour à appliquer et que les caches sont en place à ce jour.
la source
la source
Synaptic enregistre un fichier d'historique (> Fichier> Historique), aptitude enregistre à la fois l'historique dans / var / log / aptitude et les packages auto-installés dans / var / lib / aptitude / pkgstates, afin que vous puissiez vérifier ces dernières activités.
la source
J'utilise
/var/cache/apt
pour déterminer si j'ai besoin de courirapt-get update
. Par défaut, si la différence entre l'heure actuelle et l'heure du cache/var/cache/apt
est inférieure à 24 heures, je n'ai pas besoin de courirapt-get update
. L'intervalle de mise à jour par défaut peut être remplacé en passant un nombre à la fonctionrunAptGetUpdate()
Exemple de sortie:
J'ai extrait ces fonctions de mon github personnel: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
la source
info
etisEmptyString
? En outre,info
c'est un mauvais choix de nom de fonction car c'est aussi une commande. A part ça, belle solution!/var/log/dpkg.log conservera un historique de ce qui a été fait, mais pas nécessairement de l'application appelée dpkg (synaptic, apt-get, etc.).
la source
envelopper apt-get dans un script qui écrit d'abord un horodatage dans un fichier, puis fait le travail habituel. de cette façon, vous pouvez définir le format et l'emplacement de l'horodatage;)
la source
Voici une simple ligne pour exécuter une mise à jour si elle n'a pas été exécutée le dernier jour.
Il recherche le fichier update-success-stamp, qui a été modifié il y a plus d'un jour. S'il trouve le fichier du bon âge, il exécute la mise à jour. Remarque: le fichier update-success-stamp doit exister pour que cela fonctionne.
la source