ZaLinux.ru

Как определить, какие службы нужно перезапустить

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

Но как узнать, требуется ли перезапуск служб или даже перезапуск компьютера? И каких именно служб?

Используя утилиту needrestart можно определить, какие службы необходимо перезапустить после обновления системы. Кстати, needrestart может ещё и перезапускать демоны после обновлений библиотек.

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

  • docker
  • LXC
  • machined

Для начала установите needrestart.

Установка needrestart в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

sudo apt install needrestart

Установка needrestart в Arch Linux, BlackArch и их производные:

Начните с установки программы pikaur по статье «Автоматическая установка и обновление пакетов AUR». Программа pikaur — это аналог pacman, но для работы с AUR, она позволяет автоматически устанавливать и обновлять программы из AUR.

Затем выполните команду:

pikaur -S needrestart

Использование needrestart:

needrestart [-vn] [-c ] [-r ] [-f ] [-u ] [-bkl]

Опции needrestart:

    -v          больше выводимой информации
    -q          меньше выводимой информации
    -m <РЕЖИМ>  устанавливает режим подробности
        e       (e) простой режим
        a       (a) продвинутый режим
    -n          устанавливает ответ по умолчанию на 'no'
    -c <cfg>    имя конфигурационного файла
    -r <mode>   устанавливает режим перезапуска
        l       (l) только вывести список
        i       (i) интерактивный перезапуск
        a       (a) автоматический перезапуск
    -b          включить пакетный режим
    -p          включить режим плагина nagios
    -f <fe>     переписать debconf frontend (DEBIAN_FRONTEND, debconf(7))
    -u <ui>     использовать указанный UI пакет (-u ? показывает доступные пакеты)

  При использовании следующих опций выполняются только указанные проверки.:
    -k          проверка устаревшего ядра
    -l          проверка устаревших библиотек
    -w          проверка устаревшего кода CPU

    --help      показать справку
    --version   показать информацию о версии

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

sudo needrestart -b

Пример вывода:

NEEDRESTART-VER: 3.4
NEEDRESTART-KCUR: 4.19.0-8-amd64
NEEDRESTART-KEXP: 4.19.0-9-amd64
NEEDRESTART-KSTA: 3
NEEDRESTART-SVC: exim4.service
NEEDRESTART-SVC: postgresql@11-main.service

Если NEEDRESTART-KCUR (текущая версия ядра) и NEEDRESTART-KEXP (ожидаемая версия ядра) различаются, то информация о статусе ядра выводится в поле NEEDRESTART-KSTA. Возможные состояния: неизвестно (0), нет ожидающего обновления (1), ABI-совместимое обновление ожидает (2), ожидает обновления версии (3).

В полях NEEDRESTART-SVC перечислены службы, которые нужно перезапустить.

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

sudo needrestart -u NeedRestart::UI::stdio -r l

Пример вывода:

Scanning processes...
Scanning candidates...
Scanning linux images...
Pending kernel upgrade!
Running kernel version:
  4.19.0-8-amd64
Diagnostics:
  The currently running kernel version is not the expected kernel version 4.19.0-9-amd64.
Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting. [Return]
Services to be restarted:
 systemctl restart exim4.service
 systemctl restart postgresql@11-main.service
No containers need to be restarted.
No user sessions are running outdated binaries.

Давайте перезапустим сервисы (без перезапуска ядра):

sudo needrestart -u NeedRestart::UI::stdio -r a

Пример вывода:

Scanning processes...
Scanning candidates...
Scanning linux images...
Pending kernel upgrade!
Running kernel version:
  4.19.0-8-amd64
Diagnostics:
  The currently running kernel version is not the expected kernel version 4.19.0-9-amd64.
Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting. [Return]
Restarting services...
 systemctl restart exim4.service postgresql@11-main.service
No containers need to be restarted.
No user sessions are running outdated binaries.

Опять же, проверьте, что нужно перезапустить.

sudo needrestart -b

Вывод:

NEEDRESTART-VER: 3.4
NEEDRESTART-KCUR: 4.19.0-8-amd64
NEEDRESTART-KEXP: 4.19.0-9-amd64
NEEDRESTART-KSTA: 3

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

Перезагрузите операционную систему и проверьте, что нужно перезапустить.

sudo needrestart -b

Вывод:

NEEDRESTART-VER: 3.4
NEEDRESTART-KCUR: 4.19.0-9-amd64
NEEDRESTART-KEXP: 4.19.0-9-amd64
NEEDRESTART-KSTA: 1

Проверка с выводом информации в понятным для человека оформлении:

sudo needrestart -u NeedRestart::UI::stdio -r l

Вывод:

Scanning processes...
Scanning linux images...
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.

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

Сканирование процессов...
Сканирование образов linux...

Запущено ядро последней версии.

Службы не требуют перезапуска.

Контейнеры не требуют перезапуска.

В сеансах пользователей нет устаревших
 процессов.

Продвинутая настройка needrestart

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

Это поведение, а также очень много другое можно настроить в файле /etc/needrestart/needrestart.conf

Там же можно добавить программы в список исключений.

Для настройки уведомлений и команд перезапуска обратите внимание на директории /etc/needrestart/notify.d/ и /etc/needrestart/restart.d/.

Также смотрите:

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *