web-dev-qa-db-fra.com

Trouver la dernière fois la mise à jour a été effectuée avec apt-get

J'ai besoin de trouver la dernière fois que le

apt-get update

commande était exécutée sur mon serveur. Comment puis-je déterminer ces informations?

30
Mark Roddy

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";};

Alors voyez si vous avez/var/lib/apt/périodique/update-succès-timbre et si vous l'avez, vous pouvez utiliser

stat -c %y /var/lib/apt/periodic/update-success-stamp

commande d'obtenir le temps de la dernière invocation de la dernière "APT-GET UPTER".

Et si votre système n'a pas ce fichier de configuration APT, vous pouvez toujours l'ajouter.

23
Tuomas

Vous pouvez vérifier les heures d'accès sur les fichiers de/var/lib/apt/listes qui sont mises à jour lorsque vous exécutez APT-Get Update. Si apt-get Update était exécuté avec sudo, vous devez avoir une ligne connectée à /var/log/auth.log quand elle était terminée ..

11
rkthkr

Un apt-get update Peut ne pas créer ou mettre à jour des fichiers, il met à jour le répertoire du cache afin que nous puissions l'utiliser pour obtenir l'horodatage lorsque le dernier apt-get update Était dirigé :

stat -c %Y /var/cache/apt/
10
Hans Lambermont

Ne partez pas des fichiers de verrouillage. Les fichiers de verrouillage ne sont pas fiables, ils ont tendance à se déplacer dans le temps avec de nouvelles sorties Linux et de nombreux programmes de nettoyage de programmes (supprimer) les fichiers de verrouillage lorsqu'ils sont effectués avec eux.

La commande suivante vous obtiendra ce que vous recherchez.

ls -lt --time-style="long-iso" /var/log/apt | grep -o '\([0-9]\{2,4\}[- ]\)\{3\}[0-9]\{2\}:[0-9]\{2\}' -m 1

Ceci est deux commandes en une. Les résultats du premier filtre de commande dans la seconde à travers le symbole du tuyau (|).

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 interrupteur "L" indique "LS" pour 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 la date d'affichage dans le format "AAAA-MM-DD HH: MM".

Dans la partie "Grep" de la commande, le commutateur "-O" indique à Grep de montrer uniquement les parties de chaque ligne correspondant à l'expression régulière exactement. L'expression régulière que j'ai utilisée ici détecte les temps de la date dans le 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 suivant. Cela dit "Grep" d'arrêter de chercher des matchs après avoir trouvé le premier.

Donc, en résumé, nous répertorons les détails du fichier journal APT afin que nous puissions voir la date de la dernière modification, nous trier par la date et dites à Grep de tirer le premier rendez-vous du haut, ce qui revient ensuite. C'est la dernière date à laquelle apt-get a couru.

Pour jouer à l'avocat du diable un instant, cependant, il est courant que les plates-formes Debian comme Ubuntu puissent planifier APT-Get en tant que travail qui fonctionne régulièrement. Si vous recherchez la personne à l'autre extrémité de l'exécution APT-GET, vous pouvez en réalité trouver une machine. Vous pouvez toujours faire correspondre des journaux d'accès avec les journaux APT pour voir si des timbres de temps coïncident. Il est également possible de regarder dans une mesure les historique des commandes d'un utilisateur.

J'espère que cela t'aides!

3
Aaron Belovsky

Je soupçonne que vous pouvez vérifier les derniers temps modifiés sur les fichiers/var/cache/apt pour comprendre lorsque les dernières mises à jour ont été appliquées sur les listes de packages.

Je viens de tester cela et dirigez-vous "sudo apt-get Update" deux fois de suite, et les dates n'ont pas changé de leur valeur actuelle, mais je suppose que cela est dû au fait qu'il n'y avait pas de nouvelles mises à jour à appliquer et que les caches sont en place. à ce jour.

2
slacy

SYNAPTIC LOGS 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, vous permettant ainsi de vérifier ces dernières activités.

1
Josh Brower

J'utilise /var/cache/apt Pour déterminer si je dois exécuter apt-get update. Par défaut, si la différence entre l'heure actuelle et l'heure de cache de /var/cache/apt Est inférieure à 24 heures, je n'ai pas besoin d'exécuter apt-get update. L'intervalle de mise à jour par défaut peut être remplacé en passant un numéro à la fonction runAptGetUpdate()

function getLastAptGetUpdate()
{
    local aptDate="$(stat -c %Y '/var/cache/apt')"
    local nowDate="$(date +'%s')"

    echo $((nowDate - aptDate))
}

function runAptGetUpdate()
{
    local updateInterval="${1}"

    local lastAptGetUpdate="$(getLastAptGetUpdate)"

    if [[ "$(isEmptyString "${updateInterval}")" = 'true' ]]
    then
        # Default To 24 hours
        updateInterval="$((24 * 60 * 60))"
    fi

    if [[ "${lastAptGetUpdate}" -gt "${updateInterval}" ]]
    then
        info "apt-get update"
        apt-get update -m
    else
        local lastUpdate="$(date -u -d @"${lastAptGetUpdate}" +'%-Hh %-Mm %-Ss')"

        info "\nSkip apt-get update because its last run was '${lastUpdate}' ago"
    fi
}

Sortie d'échantillon:

<root@ubuntu><~/ubuntu-cookbooks/libraries>
# runAptGetUpdate 

Skip apt-get update because its last run was '0h 37m 43s' ago

J'ai extrait ces fonctions de mon github personnel: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libries/util.bash

1
Nam Nguyen
$ ls -l /var/lib/dpkg/lock 
-rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock
1
user104833

/var/log/dpkg.log gardera une histoire de ce qui a été fait, mais pas nécessairement quelle application appelée DPKG (synaptique, apt-get, etc.).

0
Jonathan

Voici un simple doubleur pour exécuter une mise à jour si elle n'a pas été courue le dernier jour.

(find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)

Il cherche le fichier de timbre de mise à jour-réussite, modifié il y a plus d'une journée. S'il trouve le fichier du bon âge, il exécute la mise à jour. Remarque: le fichier de timbre de mise à jour-réussite doit exister pour que cela fonctionne.

0
Christian Long

emballez APT-Obtenez dans un script qui écrit d'abord un horodatage dans un fichier, puis le travail habituel. De cette façon, vous pouvez définir le format et l'emplacement de l'horodatage;)

0
Sujoy