web-dev-qa-db-fra.com

Comment savoir la dernière fois que `apt-get update` a été exécuté?

Je sais que la commande pour mettre à jour les listes de référentiels est apt-get update.

Comment vérifier s'il a été exécuté aujourd'hui ou dans les dernières 24 heures?

Je ne sais pas si devrait vérifier certains horodatages de fichiers. Ou émettez une autre commande apt. Ou utilisez l'utilitaire dpkg.

Impossible de trouver quelque chose d’utile dans les pages de manuel.

24
cavila

Vous pouvez vérifier l'historique de vos commandes dans le terminal:

history | grep 'apt update'

Pour le vérifier par heure:

HISTTIMEFORMAT="%d/%m/%y %T " history | grep '[a]pt update'

(La partie [a] de l'expression régulière correspond uniquement à la lettre amais a pour effet de ne pas correspondre à elle-même lors d'une recherche dans l'historique.)

enter image description here

J'espère que ça aide!

14
nux

Vérifiez l'horodatage de /var/lib/apt/periodic/update-success-stamp.

$ ls -l /var/lib/apt/periodic/update-success-stamp
-rw-r--r-- 1 root root 0 Jan 25 01:41 /var/lib/apt/periodic/update-success-stamp

Ici, l'heure est Jan 25 01:41 quand apt-get est exécuté pour la dernière fois. Pour obtenir l'heure uniquement, utilisez la commande suivante dans le terminal,

$ ls -l /var/lib/apt/periodic/update-success-stamp | awk '{print $6" "$7" "$8}'
Jan 25 01:41

C'est le meilleur endroit pour vérifier l'heure de la dernière mise à jour. Si vous avez trouvé /var/lib/apt/periodic/ vide, vous pouvez essayer,

ls -l /var/log/apt/history.log

Mettre à jour

Il a été constaté que, pour certaines raisons, les fichiers update-success-stamp ou history.log ne sont toujours pas disponibles sur certains systèmes. Il y a un nouveau proposition de derobert à examiner dans le fichier /var/cache/apt/pkgcache.bin.

pkgcache.bin est l'emplacement du cache de package mappé en mémoire d'Apt. Il est renouvelé après chaque mise à jour. C'est donc le candidat idéal pour connaître la dernière fois où apt a été mis à jour.

On peut utiliser la commande suivante pour connaître l'heure exacte,

ls -l /var/cache/apt/pkgcache.bin | cut -d' ' -f6,7,8

ou

stat /var/cache/apt/pkgcache.bin
53
souravc

J'utilise /var/cache/apt pour déterminer si j'ai besoin d'exécuter apt-get update. Par défaut, si la différence entre l'heure actuelle et l'heure du 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 nombre à la fonction runAptGetUpdate()

function trimString()
{
    local -r string="${1}"

    sed -e 's/^ *//g' -e 's/ *$//g' <<< "${string}"
}

function isEmptyString()
{
    local -r string="${1}"

    if [[ "$(trimString "${string}")" = '' ]]
    then
        echo 'true'
    else
        echo 'false'
    fi
}

function info()
{
    local -r message="${1}"

    echo -e "\033[1;36m${message}\033[0m" 2>&1
}

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
}

Exemple de sortie:

<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/libraries/util.bash

6
Nam Nguyen

Vous pouvez également être intéressé par le fichier:

/var/log/apt/term.log

Ouvrez-le avec moins ou cat comme racine.

2
Abdelraouf Adjal

En combinant le dernier commentaire de @ ssokolow avec la réponse de ici , cette commande sera exécutée apt-get update si elle ne s’est pas exécutée au cours des 7 derniers jours:

[ -z "$(find -H /var/lib/apt/lists -maxdepth 0 -mtime -7)" ] && Sudo apt-get update

Explication:

  • -mtime -7 recherche les fichiers qui ont une heure de modification au cours des 7 derniers jours. Vous pouvez utiliser -mmin si vous tenez à des délais plus courts.
  • -maxdepth 0 s'assure que find n'ira pas dans le contenu du répertoire.
  • -H dereferences /var/lib/apt/lists s'il s'agit d'un lien symbolique
  • Si, pour une raison quelconque, find échoue, la commande est exécutée. Cela me semble être le coffre-fort par défaut. Si vous souhaitez inverser la valeur par défaut, utilisez -n dans le test et -mtime +7 dans la commande find.
1
itsadok

J'utilise cette commande

stat /var/cache/apt/ | grep -i -e access -e modify

pour montrer la dernière fois, c’est-à-dire. lancer 'apt-get update' également la dernière fois qu'il a été mis à jour.

notez que si les heures sont différentes, une mise à jour n'a peut-être pas été disponible. Comme mes mises à jour et mes mises à niveau sont exécutées par crontab à des heures précises, je peux dire si mes mises à jour ont été exécutées ou non.

1
SCBB

Je viens de poster une réponse à cette question sur le sujet suivant

Où puis-je consulter l'historique de mes mises à jour?

La réponse peut être moins appropriée pour ce sujet, car il recherche spécifiquement "apt-get upgrade". Voici un exemple de sortie.

xenial% 9: ./linuxpatchdate 
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2

Voir l'autre sujet pour le code source et plus d'explications.

0
JsinJ
LAST_UPDATED=$( stat --format="%X" /var/cache/apt/pkgcache.bin )
UNIX_TIME=$( date +%s )
TIME_DIFF=$(( UNIX_TIME - LAST_UPDATED ))

if [[ "${TIME_DIFF}" -gt 43200 ]]
then
  # It's been 12 hours since apt-get update was ran.
fi
0
mikeytown2