Como saber a última vez que o 'apt-get update' foi executado?

21

Eu sei que o comando para atualizar as listas de repositórios é apt-get update .

Como verificar se foi executado hoje ou nas últimas 24 horas?

Eu não sei se devo verificar algum timestamp de arquivo. Ou emita outro comando apt. Ou use o utilitário dpkg.

Não foi possível encontrar algo útil em man pages.

    
por cavila 24.01.2014 / 20:27

7 respostas

13

Você pode verificar seu histórico de comandos no terminal:

history | grep 'apt update'

Para verificar por hora:

HISTTIMEFORMAT="%d/%m/%y %T " history | grep 'apt update'

Espero que ajude!

    
por nux 11.12.2017 / 18:00
45

Verifique o carimbo de data / hora 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

Aqui, a hora é Jan 25 01:41 quando apt-get foi executado pela última vez. Para obter apenas o tempo, use o seguinte comando no terminal

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

É o melhor lugar para verificar o horário da última atualização. Se você encontrou /var/lib/apt/periodic/ vazio, tente

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

Atualizar

Verifica-se que, devido a algumas razões, os arquivos update-success-stamp ou history.log permanecem indisponíveis em alguns sistemas. Há uma nova proposta de derobert para ver o arquivo /var/cache/apt/pkgcache.bin .

pkgcache.bin é o local do cache de pacotes mapeado pela memória do Apt. Ele é renovado após cada atualização. Por isso, é o candidato perfeito para saber a última vez em que apt foi atualizado.

Pode-se usar o seguinte comando para saber a hora exata,

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

ou

stat /var/cache/apt/pkgcache.bin
    
por souravc 24.01.2014 / 20:45
5

Eu uso /var/cache/apt para determinar se preciso executar apt-get update . Por padrão, se a diferença entre o horário atual e o tempo de cache de /var/cache/apt for menor que 24 horas, não preciso executar apt-get update . O intervalo de atualização padrão pode ser substituído passando um número à função runAptGetUpdate()

function trimString()
{
    local -r string=""

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

function isEmptyString()
{
    local -r string=""

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

function info()
{
    local -r message=""

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

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

    echo $((nowDate - aptDate))
}

function runAptGetUpdate()
{
    local updateInterval=""

    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
}

Exemplo de saída:

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

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

Eu extraí essas funções do meu github pessoal: link

    
por Nam Nguyen 23.02.2015 / 21:33
1

Você também pode estar interessado no arquivo:

/var/log/apt/term.log

Abra-o com menos ou cat como raiz .

    
por Abdelraouf Adjal 29.01.2014 / 17:43
1

Eu uso este comando

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

para mostrar a última vez que foi acessado, ou seja. executando 'apt-get update' também da última vez que foi realmente atualizado.

observe se os horários são diferentes, pode não ter havido uma atualização disponível. Como tenho minhas atualizações e upgrades em execução pelo crontab em horários específicos, posso dizer se minhas atualizações foram executadas ou não.

    
por SCBB 04.02.2017 / 18:53
1

Combinando o último comentário de @ ssokolow com a resposta de aqui , este comando executará apt-get update se não tiver executado nos últimos 7 dias:

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

Explicação:

  • -mtime -7 encontra arquivos que possuem um horário de alteração nos últimos sete dias. Você pode usar -mmin se você se preocupa com tempos mais curtos.
  • -maxdepth 0 garante que o encontro não entre no conteúdo do diretório.
  • -H de referência /var/lib/apt/lists se for um link flexível
  • Se por algum motivo find falhar, o comando será executado. Isso parece-me o padrão seguro. Se você quiser inverter o padrão, use -n no teste e -mtime +7 no comando find.
por itsadok 13.04.2017 / 11:41
0

Acabei de postar uma resposta para essa pergunta no seguinte tópico

Onde posso pesquisar meu histórico de atualizações?

A resposta pode ser menos apropriada para este tópico, já que especificamente procura por "apt-get upgrade". Aqui está a saída de amostra.

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

Veja o outro tópico para o código-fonte e mais explicações.

    
por JsinJ 11.03.2017 / 01:00