packagekit.service – где таймер?

Вопрос или проблема

Сервер Ubuntu 24.04, почему эта штука packagekit запускается каждые 30 минут, и где находится таймер для настройки частоты его запуска? Я не могу его найти! Его нет и в crontab. Я не вижу смысла запускать это дважды в час, это просто захламляет мои логи…

Feb 06 13:47:28 signalsecurity3 systemd[1]: Starting packagekit.service - PackageKit Daemon...
Feb 06 13:47:28 signalsecurity3 PackageKit[1630535]: daemon start
Feb 06 13:47:28 signalsecurity3 systemd[1]: Started packagekit.service - PackageKit Daemon.
Feb 06 13:52:44 signalsecurity3 PackageKit[1630535]: daemon quit
Feb 06 13:52:44 signalsecurity3 systemd[1]: packagekit.service: Deactivated successfully.

blahblah:~$ sudo systemctl list-timers packagekit.service
NEXT LEFT LAST PASSED UNIT ACTIVATES

0 timers listed.

Спасибо!

systemctl list-timers не принимает имя службы как параметр. Он поддерживает фильтрацию только по столбцу UNIT – не по столбцу ACTIVATES. Используйте systemctl status packagekit и ищите “TriggeredBy”.

Но PackageKit не является службой, которую имело бы смысл напрямую активировать по таймеру, потому что он сам по себе ничего не делает. Вместо этого, клиент, такой как pkcon, должен попросить его выполнить какую-то конкретную операцию. Так что, скорее всего, у вас либо а) есть таймер – или традиционное задание cron – которое запускает pkcon, который пытается связаться с PackageKit, и служба запускается через активацию по запросу D-Bus; или б) у вас есть вторая служба, которая работает постоянно и связывается с PackageKit каждый час, что снова вызывает активацию по запросу D-Bus для запуска службы, к которой обращаются.

(Моя собственная догадка – “GNOME Software”, которое может работать как пользовательская служба, а не системная.)

Ответ или решение

Вопрос о частоте запуска службы PackageKit на сервере Ubuntu 24.04 затрагивает важный аспект администрирования систем с использованием systemd и D-Bus. Понимание того, как эти компоненты интегрируются и взаимодействуют, поможет решить проблему, предлагаемую в вашем вопросе. Давайте разберемся в деталях.

Теория

PackageKit и его работа: PackageKit — это система управления пакетами, разработанная для унификации процессов установки, обновления и удаления программного обеспечения. Обычно он не работает постоянно; вместо этого он активируется, когда клиентское приложение запрашивает выполнение определённых операций, таких как обновление программного обеспечения. Само по себе PackageKit не инициирует никаких действий без запросов со стороны клиентских приложений, например, pkcon или инструментов, используемых графическими средами, таких как GNOME Software.

D-Bus и активация по требованию: D-Bus — это межпроцессный коммуникационный сервис, который используется для запуска и координации различных служб, таких как PackageKit. Когда приложение или скрипт делает запрос к службе, поддерживающей активацию по требованию (как PackageKit), D-Bus может запустить её. Эта функция делает его своеобразным "мостом" между запросами и выполняемыми действиями, улучшая модульность системы.

Таймеры и крон: В системах на базе systemd службы могут запускаться через таймеры (systemd timers) или через традиционные задания cron. Однако в данной ситуации, если вы не находите явно заданных таймеров для PackageKit, это может свидетельствовать о том, что запуск происходит не по расписанию напрямую, а через активацию по событию D-Bus, вызванного другим процессом или таймером.

Пример

Предположим, что у вас есть сервис или приложение, регулярно взаимодействующее с PackageKit через D-Bus. Это может быть пользовательское приложение, работающее в рамках вашего графического окружения, например, GNOME Software. Оно периодически инициализирует запросы к PackageKit для проверки обновлений или другой задачи, что инициирует запуск PackagetKit.

Применение

  1. Поиск источника запроса: Используя команду systemctl status packagekit, вы можете определить, какие процессы активировали PackageKit. Вопрос "TriggeredBy" укажет на источник, вызвавший активацию службы.

  2. Проверка периодических задач: Найдите потенциальные таймеры с подобной функциональностью, выполнив команду systemctl list-timers, чтобы просмотреть всю развернутую информацию о выполняемых задачах и их активирующих службах.

  3. Поиск эскалирующих запросов: Если в качестве клиента выступает GNOME Software, который работает, как правило, на уровне пользователя, вам может быть полезно проверить пользовательские службы и таймеры. Выполните systemctl --user list-timers, чтобы идентифицировать возможные задачи, запускаемые на уровне пользователя.

  4. Изменение конфигурации клиента: Если клиентское приложение действительно отправляет запросы на активацию мы можем изучить его настройки, чтобы уменьшить частоту таких запросов. Например, для GNOME Software это может означать изменение его настроек, чтобы снизить частоту автопроверки обновлений.

  5. Логирование и анализ: Рекомендуется также использовать логи системы (например, systemd-journald или syslog) для отслеживания событий и понимания контекста активации PackageKit. Это поможет определить внезапные или неожиданные источники запроса.

Заключение

Устранение частого запуска службы PackageKit может потребовать комбинации действий: от изменения системных или пользовательских таймеров до регулирования настроек клиентских программ, использующих PackageKit. Понимание и использование D-Bus для активации по требованию предлагает глубокую гибкость, но также требует дополнительного внимания к деталям взаимодействия программ, чтобы управлять системными ресурсами эффективно.

Оцените материал
Добавить комментарий

Капча загружается...