Atualize o cache do apt-get somente se for mais antigo que certo tempo

2

Eu estou no debian. Eu gostaria de executar uma atualização do apt-get (e talvez outra coisa) somente se o tempo desde a última atualização for maior ou menor que uma certa quantia com um comando direto, nenhum truque de cron ou similar . / p> Suponha que eu não saiba nada sobre o estado anterior do apt-get , uma atualização nunca poderia ter sido emitida desde a instalação do SO, ou acionada manualmente 2 minutos atrás, ou emitida automaticamente pelo serviço de upgrades não supervisionados.

Por exemplo.

if(time > 30 min) apt-get update
if(time > 2 days) something else

Esta questão é semelhante a outra que eu encontrei no askubuntu, mas devido a configuração diferente no debian config eu não consigo encontrar um arquivo de timestamp me informando quando o último comando update ocorreu.

    
por user3450548 20.03.2016 / 10:43

1 resposta

3

O arquivo /var/cache/apt/pkgcache.bin é gerado novamente a cada vez que apt-get update é executado (e não é gerado novamente).

Por exemplo, se você quiser executar apt-get update apenas se não tiver sido executado na última hora, poderá usar

#!/bin/sh
last_update=$(stat -c %Y /var/cache/apt/pkgcache.bin)
now=$(date +%s)
if [ $((now - last_update)) -gt 3600 ]; then
  apt-get update
fi

ou

#!/bin/sh
if [ -z "$(find /var/cache/apt/pkgcache.bin -mmin -60)" ]; then
  apt-get update
fi

Observe que, se você executar várias cópias desse script quase ao mesmo tempo, todas elas poderão decidir executar apt-get update . Se isso é uma preocupação, use um cadeado (que é uma questão totalmente separada).

    
por 20.03.2016 / 16:20