Needrestart установлен не всегда и не везде. Например, в базовых образах LXC контейнеров в Proxmox его нет. Если система не ваша, то самостоятельно лучше ничего не ставить.
Косвенно узнать, что у нас со службами и перезагрузкой можно очень простым и привычным способом, но для других задач. На помощью придёт lsof.
# lsof -nP +L1 | grep '(deleted)'
systemd-l 488 root txt REG 8,1 281096 0 270929 /usr/lib/systemd/systemd-logind (deleted)
dockerd 526 root txt REG 8,1 75181152 0 265728 /usr/sbin/dockerd (deleted)
sshd 532 root txt REG 8,1 1265432 0 262298 /usr/sbin/sshd (deleted)
systemd 582 root txt REG 8,1 92544 0 270899 /usr/lib/systemd/systemd (deleted)
(sd-pam) 584 root txt REG 8,1 92544 0 270899 /usr/lib/systemd/systemd (deleted)
bash 647 root txt REG 8,1 1265648 0 263309 /usr/bin/bash (deleted)
Тут видно удалённые файлы системных сервисов, таких как systemd, sshd, ну и bash заодно. То есть было обновление, приехали новые версии этих файлов, заменили старые. Но так как службы не перезапускались, они до сих пор используют удалённые файлы.
Для systemd существует специальная команда для полного перезапуска службы в том числе после обновления:
# systemctl daemon-reexec
Её, кстати, часто ошибочно предлагают ИИ, когда изменяются настройки юнитов. Использовать её в этом случае не стоит. К сожалению, эта команда не всегда помогает запустить systemd с обновлённым бинарём. В таком случае поможет только перезагрузка.
С другими службами проще. Для обновления
sshd и bash достаточно переподключиться по SSH. В новой сессии загрузятся уже новые бинарники.А вот если изменился systemd, glibc или ядро, то тут без reboot уже не обойтись. Ядро, кстати, можно так посмотреть:
# uname -r
6.1.0-35-amd64
Это текущая версия, а вот список установленных ядер:
# dpkg -l | grep linux-image
.................................
ii linux-image-6.1.0-39-amd64 6.1.148-1 amd64 Linux 6.1 for 64-bit PCs (signed)
Установлен пакет с более свежим ядром. Надо перезагружаться.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux
