Как узнать последний раз «apt-get update» был выполнен?

Для этого вам нужен плагин для Gedit, и вы можете найти его здесь. Но я использовал это 2 года назад в последний раз, и мы перешли на Gedit 3 после того, как этот плагин был представлен. Не может работать (...). Нет ответа здесь: Складной плагин для gedit 3.2.1? поэтому он не широко используется или не работает.

Я сам перешел к Аптане. Он имеет фальцовку для CSS и HTML и многое другое. Любой другой редактор, основанный на стиле кодирования, будет иметь встроенную фальцовку. Некоторые из них я использовал и знаю о: Eclipse и Kate (Kate is K тоже не интегрируется).

1
задан 2 December 2016 в 00:06

6 ответов

Проверьте отметку времени /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

Здесь время Jan 25 01:41, когда последний apt-get выполнен. Чтобы получить только время, используйте следующую команду в терминале,

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

Лучшее место для проверки последнего времени обновления. Если вы обнаружили, что /var/lib/apt/periodic/ пуст, вы можете попробовать,

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

Обновить

Обнаружено, что по некоторым причинам выше файлы update-success-stamp или history.log остаются недоступными в некоторых системах. Существует новое предложение от derobert, чтобы просмотреть файл /var/cache/apt/pkgcache.bin.

offer - это расположение кэша сопоставленного пакета памяти Apt. Он обновляется после каждого обновления. Итак, это идеальный кандидат, который знал последний раз, когда был обновлен apt.

Чтобы узнать точное время,

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

или 11]

stat /var/cache/apt/pkgcache.bin
45
ответ дан 24 May 2018 в 12:35
  • 1
    мой каталог /var/lib/apt/periodic/ пуст – virtualxtc 25 January 2014 в 14:08
  • 2
    Мой каталог также пуст. Debian 7.3 wheezy. – cavila 25 January 2014 в 17:53
  • 3
    Лучшим местом для резервного копирования будет /var/cache/apt/pkgcache.bin. Кроме того, не анализируйте вывод ls; вместо этого используйте stat. Имейте в виду, что выход ls зависит от языка, зависит от возраста файла и т. Д. (Кроме того, я думаю, вы получите только первый файл, который вы предлагаете, если у вас установлен update-notifier-common) – derobert 12 March 2014 в 22:12
  • 4
    Кажется, что /var/cache/apt/pkgcache.bin также затронута установка пакета, поэтому это не надежный способ проверить последний прогон apt-get update. – GnP 3 December 2016 в 00:18
  • 5
    ... и я только что обнаружил, что система Debian 8, в которой apt-get clean была запущена в последнее время, не будет иметь /var/cache/apt/pkgcache.bin. Я попытаюсь использовать mtime из /var/lib/apt/lists вместо этого, так как это, кажется, сырые, не кэшированные данные, которые apt-get update фактически манипулирует. – ssokolow 22 February 2017 в 14:12

Я использую /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

5
ответ дан 24 May 2018 в 12:35
  • 1
    хороший. здесь была сделана санированная версия termbin.com/jq3w (не оставляет у вас шансов в вашем env, что может вызвать проблемы с пространством имен) – unsynchronized 3 June 2016 в 08:20

Вы также можете интересоваться файлом:

/var/log/apt/term.log

Откройте его с меньшим или котом как root.

1
ответ дан 24 May 2018 в 12:35
  • 1
    Это разумное место для проверки журналов действий apt, выполненных в базе данных пакетов, но афайк, который плакат хочет узнать о apt-get update, и это, очевидно, не регистрируется. – Faheem Mitha 12 March 2014 в 22:00

Я использую эту команду

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

, чтобы показать, что в последний раз к ней обращался, т. е. запуск 'apt-get update' также в последний раз, когда он был фактически обновлен.

обратите внимание, если время отличается, возможно, обновление не доступно. Поскольку у меня есть обновления и обновления, выполняемые crontab в определенное время, я могу сказать, были ли мои обновления запущены или нет.

1
ответ дан 24 May 2018 в 12:35

Объединение последнего комментария @ ssokolow с ответом отсюда, эта команда будет запускать apt-get update, если она не запустилась за последние 7 дней:

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

Объяснение:

3] -mtime -7 находит файлы, которые имеют время изменения за последние 7 дней. Вы можете использовать -mmin, если вы заботитесь о более коротких временах. -maxdepth 0 гарантирует, что поиск не попадет в содержимое каталога. -H разметки /var/lib/apt/lists, если это мягкая ссылка. Если по какой-либо причине find завершается сбой, команда будет запущена. Мне это кажется безопасным дефолтом. Если вы хотите перевернуть по умолчанию, используйте -n в тесте и -mtime +7 в команде find.
1
ответ дан 24 May 2018 в 12:35

Я только что опубликовал ответ на этот вопрос по следующей теме

Где я могу найти свою историю обновлений?

Ответ может быть менее подходящим для этого вопроса, так как он конкретно ищет «apt-get upgrade». Вот пример вывода.

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

См. Другую тему для исходного кода и дополнительные пояснения.

0
ответ дан 24 May 2018 в 12:35
  • 1
    Мне казалось, что ваш код ищет обновления, а не обновления. Например, я просто запускал & apt-get update " (тема этого вопроса) на моем Ubuntu 16.04, и ни одна йота изменений не появляется в / var / log / apt, подразумевая, что сканирование чего-либо в этом каталоге будет бесполезным в ответ на этот конкретный вопрос. – Ron Burk 1 May 2017 в 23:56
  • 2
    Вы совершенно правы. Спасибо что подметил это. Я изменил свой ответ, чтобы отразить это. Мы искали последние обновления даты, которые были применены к машине, а не только загруженные обновления. – JsinJ 4 May 2017 в 07:40

Другие вопросы по тегам:

Похожие вопросы: