Состояние автоматических обновлений?

17

Кто-нибудь знает, можно ли определить состояние автоматического обновления? Можно ли узнать, какие пакеты устанавливаются или где мы находимся в процессе?

Я ценю преимущества автоматических обновлений, но они могут быть действительно раздражающими, когда у вас есть система, которая была отключена в течение пары месяцев, и вы хотите установить приложение или когда они потребляют ресурсы ЦП на машинах, которые не имеют много начать с.

Я не просто хочу убить оставленные без присмотра обновления. Я знаю, как это сделать. Я хочу, чтобы они побежали. Я просто хочу знать, как я могу узнать, что на самом деле происходит и на какой стадии они находятся.

b_laoshi
источник
Беги pgrep -fl apt, я полагаю.
Муру,

Ответы:

22

В 16.04 и более новых системах автоматические обновления выполняются ежедневно в произвольное время.

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

Случайное время устанавливается заданием cron (/etc/cron.daily/apt.compat), и вы можете прочитать случайное время на сегодня, задав systemd:

$ systemctl list-timers apt-daily.timer
NEXT                         LEFT     LAST                         PASSED      UNIT            ACTIVATES
Tue 2017-07-11 01:53:29 CDT  13h left Mon 2017-07-10 11:22:40 CDT  1h 9min ago apt-daily.timer apt-daily.service

В этом случае вы можете видеть, что uu работал 1 час и 9 минут назад.

Как узнать, запущены ли автоматические обновления :

Один простой способ - проверить файлы меток времени для различных компонентов apt:

$ ls -l /var/lib/apt/periodic/
total 0
-rw-r--r-- 1 root root 0 Jul 10 11:24 unattended-upgrades-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:23 update-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:24 update-success-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:24 upgrade-stamp

Здесь вы можете видеть, что uu - просто еще один подходящий компонент. apt размещает здесь метку времени независимо от того, как был запущен apt.

Собрав воедино данные, вы можете увидеть, что таймер запустился apt (uu) в 11:22. Он запустил обновление, завершившееся в 11:23, затем обновление, завершившееся в 11:24. Наконец, вы можете видеть, что apt считает обновление успешным (без ошибок или других сбоев).

Очевидно, что если вы видите недавний таймер без соответствующей метки времени завершения, вы можете проверить, работает psли apt.

Как определить, какой шаг выполняется сейчас :

Один простой способ - проверить файл журнала uu.

$ less /var/log/unattended-upgrades/unattended-upgrades.log
2017-07-10 11:23:00,348 INFO Initial blacklisted packages: 
2017-07-10 11:23:00,349 INFO Initial whitelisted packages: 
2017-07-10 11:23:00,349 INFO Starting unattended upgrades script
2017-07-10 11:23:00,349 INFO Allowed origins are: ['o=Ubuntu,a=zesty-security', 'o=Ubuntu,a=zesty-updates']
2017-07-10 11:23:10,485 INFO Packages that will be upgraded: apport apport-gtk libpoppler-glib8 libpoppler-qt5-1 libpoppler64 poppler-utils python3-apport python3-problem-report
2017-07-10 11:23:10,485 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log'
2017-07-10 11:24:20,419 INFO All upgrades installed

Здесь вы можете увидеть обычный ежедневный процесс, включая строки «запущен» и «завершен», а также список пакетов, которые должны были быть обновлены.

Если список пакетов еще не зарегистрирован, тогда apt можно безопасно прервать. Как только список пакетов зарегистрирован, НЕ прерывайте apt.

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

user535733
источник
4
Эта команда показывает, как будто вы работаете в терминале, если он еще не завершен. tail -f /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
Adsy2010