После обновления не всегда понятно, какие службы нужно перезапустить, чтобы сделанные изменения окончательно вступили в силу. Особенно это актуально если включены автоматические обновления (всех пакетов или только обновлений безопасности). Аналогично с обновлением ядра — необходима перезагрузка после каждого обновления ядра, иначе система может работать неправильно.
Но как узнать, требуется ли перезапуск служб или даже перезапуск компьютера? И каких именно служб?
Используя утилиту 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/.
Также смотрите:
Связанные статьи:
- Нужно ли перезапускать службы при обновлении пакетов (100%)
- Как сделать так, чтобы служба systemd перезапускалась в случае сбоя (РЕШЕНО) (89.5%)
- Ошибка «Failed to talk to init daemon.» (РЕШЕНО) (78.5%)
- В чём разница между «systemctl reboot» и «reboot», а также «systemctl poweroff» и «poweroff» (78.5%)
- Как определить расположение и имя конфигурационного файла MySQL (MariaDB). Как узнать название групп для конфигурационных файлов MySQL и MariaDB (65.8%)
- Как исправить «Windows is hibernated, refused to mount» (РЕШЕНО) (RANDOM - 50%)