Я использую /var/cache/apt, чтобы определить, нужно ли мне запускать apt-get update. По умолчанию, если разница между текущим временем и временем кеша /var/cache/apt составляет менее 24 часов, мне не нужно запускать apt-get update. Интервал обновления по умолчанию можно переопределить, передав число в функцию 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
}
Образец вывода:
<root@ubuntu><~/ubuntu-cookbooks/libraries>
# runAptGetUpdate
Skip apt-get update because its last run was '0h 37m 43s' ago
Я извлек эти функции из своего личного github: https: //github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
Переход к системным настройкам на левой панели -> Время и дата в разделе системы -> Часы
Здесь вы выбрали нужные настройки, установив / сняв соответствующие флажки.
Вот и все.