A última atualização foi feita com o apt-get

29

Eu preciso encontrar a última vez que o

apt-get update
O comando

foi executado no meu servidor. Como posso determinar esta informação?

    
por Mark Roddy 05.06.2009 / 21:10

11 respostas

21

Pelo menos nos sistemas Ubuntu existe um arquivo /etc/apt/apt.conf.d/15update-stamp contendo:

APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};

Então veja se você tem / var / lib / apt / periodic / update-success-stamp e se você tiver, você pode usar

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

comando para obter o tempo da última invocação do "apt-get update".

E se o seu sistema não tiver esse arquivo de configuração apt, você sempre poderá adicioná-lo.

    
por 07.09.2012 / 11:55
11

Você pode verificar os tempos de acesso nos arquivos em / var / lib / apt / lists que são atualizados quando você executa o apt-get update. Se o apt-get update foi executado com o sudo você deve ter um linha logada /var/log/auth.log quando foi feito ..

    
por 05.06.2009 / 21:16
10

Um apt-get update pode não criar ou atualizar arquivos, ele atualiza o diretório de cache para que possamos usá-lo para obter o registro de data e hora em que o último apt-get update foi executado:

stat -c %Y /var/cache/apt/
    
por 06.05.2013 / 16:24
3

Não vá dos arquivos de bloqueio. Os arquivos de bloqueio não são confiáveis, eles tendem a se movimentar ao longo do tempo com novas versões do Linux, e muitos programas limpam (removem) arquivos de bloqueio quando terminam com eles.

O comando a seguir mostra o que você está procurando.

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

Isto é dois comandos em um. Os resultados do primeiro filtro de comando para o segundo através do símbolo pipe (|).

No primeiro comando, estou usando "ls" para listar o conteúdo do arquivo do diretório / var / log / apt, que é o diretório que armazena os logs do histórico de acesso para o apt-get. A parte "-lt" é na verdade dois switches. O primeiro switch "l" diz "ls" para listar um arquivo por linha com detalhes. A segunda chave "t" diz "ls" para classificar por data e hora. "--time-style" força a hora da data a ser exibida no formato "AAAA-MM-DD HH: MM".

Na parte "grep" do comando, a opção "-o" diz ao grep para mostrar apenas as partes de cada linha que correspondem exatamente à expressão regular. A expressão regular que usei aqui detecta os tempos de data que estão no formato especificado no comando "ls". Você também notará a verdadeira pequena mágica no final do comando "grep" que há uma opção "-m" com o número "1" imediatamente a seguir. Isso diz "grep" para parar de procurar por correspondências depois de encontrar a primeira.

Então, em resumo, estamos listando os detalhes do arquivo de log apt para que possamos ver a data da última modificação, então classificamos por data e informamos ao grep para extrair a primeira data do topo, que então retorna. Essa é a última data que o apt-get executou.

Para interpretar o defensor do diabo por um momento, no entanto, é comum que as plataformas Debian, como o Ubuntu, programem o apt-get como um trabalho que é executado regularmente. Se você está procurando a pessoa na outra extremidade da execução do apt-get, você pode realmente encontrar uma máquina. Você pode sempre combinar logs de acesso com os logs do apt para ver se algum time stamp coincide. Também é possível ver o histórico de comandos de um usuário até certo ponto.

Espero que isso ajude!

    
por 05.07.2012 / 00:50
2

Eu suspeito que você pode verificar as últimas vezes modificadas em arquivos / var / cache / apt para descobrir quando as últimas atualizações foram aplicadas às listas de pacotes.

Acabei de testar isso e executei "sudo apt-get update" duas vezes seguidas, e as datas não mudaram de seu valor atual, mas suspeito que isso acontece porque não havia novas atualizações a serem aplicadas e que o caches estão atualizados.

    
por 05.06.2009 / 21:59
1
$ ls -l /var/lib/dpkg/lock 
-rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock
    
por 04.02.2012 / 02:00
1

O Synaptic registra um histórico (> Arquivo > Histórico), o aptitude registra o histórico em / var / log / aptitude e pacotes auto-instalados em / var / lib / aptitude / pkgstates, então você pode verificar estes últimos atividade.

    
por 05.06.2009 / 21:19
1

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

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 23.02.2015 / 21:38
0

/var/log/dpkg.log manterá um histórico do que foi feito, mas não necessariamente o aplicativo chamado dpkg (synaptic, apt-get, etc).

    
por 05.06.2009 / 21:21
0

agrupe o apt-get em um script que primeiro grava um registro de data e hora em um arquivo e, em seguida, faz o trabalho usual. Dessa forma, você pode definir o formato e a localização do registro de data e hora;)

    
por 06.06.2009 / 15:17
0

Aqui está uma simples linha de uma linha para executar uma atualização, caso não tenha sido executada no último dia.

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

Ele procura o arquivo update-success-stamp, que foi modificado há mais de um dia. Se encontrar o arquivo da idade certa, ele executará a atualização. Nota: o arquivo update-success-stamp deve existir para que isso funcione.

    
por 15.04.2016 / 17:32