Preciso encontrar a última vez que o
apt-get update
O comando foi executado no meu servidor. Como posso determinar essas informações?
Pelo menos nos sistemas Ubuntu, há 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";};
Portanto, veja se você possui / var / lib / apt / periodic / update-success-stamp e se possui, você pode usar
stat -c %y /var/lib/apt/periodic/update-success-stamp
comando para obter a hora da última chamada "apt-get update".
E se o seu sistema não tiver esse arquivo de configuração apt, você sempre poderá adicioná-lo.
/var/lib/apt/periodic/update-stamp
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 a atualização do apt-get foi executada com o sudo, você deve ter uma linha registrada em /var/log/auth.log quando terminar.
fonte
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 carimbo de data / hora quando o últimoapt-get update
foi executado:fonte
apt-get update
Não vá dos arquivos de bloqueio. Os arquivos de bloqueio não são confiáveis, tendem a se movimentar ao longo do tempo com as novas versões do Linux e muitos programas limpam (removem) os arquivos de bloqueio quando terminam.
O comando a seguir irá fornecer o que você está procurando.
Este é dois comandos em um. Os resultados do primeiro comando são filtrados para o segundo através do símbolo de barra vertical (|).
No primeiro comando, estou usando "ls" para listar o conteúdo 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 duas opções. A primeira opção "l" diz a "ls" para listar um arquivo por linha com detalhes. A segunda opção "t" indica "ls" para classificar por data e hora. "--time-style" força a data e hora a serem exibidas 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 horários de data que estão no formato especificado no comando "ls". Você também notará a verdadeira pequena peça mágica no final do comando "grep", indicando que há uma opção "-m" com o número "1" imediatamente a seguir. Isso diz ao "grep" para parar de procurar correspondências depois de encontrar a primeira.
Então, em resumo, estamos listando os detalhes do arquivo de log do apt para que possamos ver a data da última modificação, depois classificamos por data e pedimos ao grep para retirar a primeira data do topo, que então retorna. Essa é a última data em que o apt-get foi executado.
Para bancar o advogado do diabo por um momento, no entanto, é comum que plataformas Debian como o Ubuntu planejem o apt-get como um trabalho que é executado regularmente. Se você estiver procurando pela pessoa do outro lado da execução do apt-get, poderá encontrar uma máquina. Você sempre pode associar os logs de acesso aos logs do apt para ver se os carimbos de hora coincidem. Também é possível examinar o histórico de comandos de um usuário até certo ponto.
Espero que isto ajude!
fonte
/var/log/apt
também é registrado quando eu, por exemplo, fazer umapt-get install some-package
. Na verdade no Ubuntu ele não log algo quando eu façoapt-get update
Eu suspeito que você pode verificar os últimos horários modificados em files / var / cache / apt para descobrir quando as últimas atualizações foram aplicadas às listas de pacotes.
Acabei de testar isso e executei o "sudo apt-get update" duas vezes seguidas, e as datas não mudaram em relação ao valor atual, mas suspeito que seja porque não houve novas atualizações a serem aplicadas e que os caches estão em funcionamento Até a presente data.
fonte
fonte
O Synaptic registra um arquivo de histórico (> Arquivo> Histórico), o aptitude registra o histórico em / var / log / aptitude e os pacotes instalados automaticamente em / var / lib / aptitude / pkgstates, para que você possa verificá-los para as atividades mais recentes.
fonte
Eu uso
/var/cache/apt
para determinar se preciso executarapt-get update
. Por padrão, se a diferença entre o tempo atual e o tempo do cache/var/cache/apt
for menor que 24 horas, não preciso executarapt-get update
. O intervalo de atualização padrão pode ser substituído, passando um número para funcionarrunAptGetUpdate()
Saída de amostra:
Extraí essas funções do meu github pessoal: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
fonte
info
eisEmptyString
? Além disso,info
é uma má escolha do nome da função, pois também é um comando. Fora isso, boa solução!/var/log/dpkg.log manterá um histórico do que foi feito, mas não necessariamente qual aplicativo chamado dpkg (synaptic, apt-get, etc.).
fonte
envolva o apt-get em um script que primeiro grava um carimbo de data / hora em um arquivo e depois faz o trabalho usual. Dessa forma, você pode definir o formato do carimbo de data e hora;)
fonte
Aqui está uma única linha para executar uma atualização se ela não tiver sido executada no último dia.
Ele procura o arquivo update-success-stamp, modificado mais de um dia atrás. Se encontrar o arquivo da idade certa, executará a atualização. Nota: o arquivo update-success-stamp deve existir para que isso funcione.
fonte