Мне нужно найти последний раз, когда
apt-get update
Команда была выполнена на моем сервере. Как я могу определить эту информацию?
По крайней мере, в системах Ubuntu есть файл /etc/apt/apt.conf.d/15update-stamp, содержащий:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Посмотрите, есть ли у вас / var / lib / apt / periodic / update-success-stamp и если у вас есть, вы можете использовать
stat -c %y /var/lib/apt/periodic/update-success-stamp
команда для получения времени последнего вызова «apt-get update».
И если ваша система не имеет этого файла конфигурации, вы всегда можете добавить его.
/var/lib/apt/periodic/update-stamp
Вы можете проверить время доступа к файлам в / var / lib / apt / lists, которая обновляется при запуске apt-get update. Если обновление apt-get было запущено с помощью sudo, вы должны зарегистрировать строку в /var/log/auth.log, когда это будет сделано.
источник
Он
apt-get update
может не создавать и не обновлять файлы, он обновляет каталог кэша, поэтому мы можем использовать его для получения метки времени, когда последнийapt-get update
запуск выполнялся:источник
apt-get update
Не уходи от файлов блокировки. Файлы блокировки не надежны, они имеют тенденцию перемещаться с течением времени с новыми выпусками Linux, и многие программы очищают (удаляют) файлы блокировки, когда они делают с ними.
Следующая команда даст вам то, что вы ищете.
Это две команды в одной. Результаты первой команды фильтруют во вторую через символ (|).
В первой команде я использую «ls» для отображения содержимого файла каталога / var / log / apt, который является каталогом, в котором хранятся журналы истории доступа для apt-get. Часть "-lt" - это фактически два переключателя. Первый переключатель «l» указывает «ls» перечислять по одному файлу в строке с подробной информацией. Второй переключатель «t» указывает «ls» сортировать по дате и времени. «--time-style» заставляет дату и время отображаться в формате «ГГГГ-ММ-ДД ЧЧ: ММ».
В части команды "grep" ключ "-o" указывает grep показывать только те части каждой строки, которые точно соответствуют регулярному выражению. Регулярное выражение, которое я здесь использовал, определяет время даты в формате, указанном в команде "ls". В самом конце команды «grep» вы также заметите настоящий маленький кусочек магии: здесь есть ключ «-m», за которым следует цифра «1». Это говорит "grep" прекратить поиск совпадений после того, как он найдет первый.
Итак, в итоге, мы перечисляем подробности файла журнала apt, чтобы мы могли видеть дату последнего изменения, затем сортируем по дате и говорим grep, чтобы вытащить первую дату сверху, которую она затем возвращает. Это последнее свидание, которое провёл apt-get.
Однако, чтобы на мгновение сыграть в защиту дьявола, платформы Debian, такие как Ubuntu, часто планируют apt-get как работу, которая выполняется регулярно. Если вы ищете человека на другом конце выполнения apt-get, вы можете найти машину. Вы всегда можете сопоставить журналы доступа с журналами apt, чтобы увидеть, совпадают ли какие-либо временные метки. Также возможно посмотреть историю команд пользователя в некоторой степени.
Надеюсь это поможет!
источник
/var/log/apt
это также регистрируется, когда я например делаюapt-get install some-package
. На самом деле на Ubuntu он не регистрирует что-то, когда я делаюapt-get update
Я подозреваю, что вы можете проверить последние изменения в файлах / var / cache / apt, чтобы выяснить, когда последние обновления были применены к спискам пакетов.
Я только что проверил это и дважды выполнил команду «sudo apt-get update», и даты не изменились по сравнению с их текущим значением, но я подозреваю, что это потому, что не было новых обновлений, которые нужно применить, и что кэши работают встретиться.
источник
источник
Synaptic регистрирует файл истории (> Файл> История), aptitude записывает историю как в / var / log / aptitude, так и автоматически установленные пакеты в / var / lib / aptitude / pkgstates, так что вы можете проверить их на предмет последних действий.
источник
Я использую,
/var/cache/apt
чтобы определить, нужно ли мне бежатьapt-get update
. По умолчанию, если разница между текущим временем и временем кэширования/var/cache/apt
составляет менее 24 часов, мне не нужно запускатьсяapt-get update
. Интервал обновления по умолчанию можно переопределить, передав число в функциюrunAptGetUpdate()
Пример вывода:
Я извлек эти функции из моего личного github: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
источник
info
иisEmptyString
? Кроме того,info
это плохой выбор имени функции, так как это также команда. Помимо этого, хорошее решение!/var/log/dpkg.log будет хранить историю того, что было сделано, но не обязательно, какое приложение называется dpkg (synaptic, apt-get и т. д.).
источник
Оберните apt-get в скрипт, который сначала записывает метку времени в файл, а затем выполняет обычную работу. таким образом, вы можете определить формат и местоположение метки времени;)
источник
Вот простой однострочный инструмент для запуска обновления, если оно не было запущено в последний день.
Он ищет файл update-success-stamp, который был изменен более одного дня назад. Если он находит файл нужного возраста, он запускает обновление. Примечание: файл update-success-stamp должен существовать, чтобы это работало.
источник