Чтобы перезапустить демон, запустите
systemctl daemon-reexec
Это задокументировано на systemctlстранице руководства :
Повторно запустите системный менеджер. Это позволит сериализовать состояние диспетчера, повторно выполнить процесс и снова десериализовать состояние. Эта команда мало полезна, за исключением отладки и обновления пакетов. Иногда это может быть полезно как тяжеловес daemon-reload. Во время повторного выполнения демона все сокеты, прослушиваемые systemd от имени пользовательской конфигурации, будут оставаться доступными.
К сожалению, needs-restartingне могу определить, что на systemdсамом деле перезапустил. systemd execsсам перезапустить, что не сбрасывает время запуска процесса; но needs-restartingсравнивает время модификации исполняемого файла со временем запуска процесса, чтобы определить, должен ли процесс быть перезапущен (среди прочего), и в результате он всегда считает, что systemdдолжен быть перезапущен ... Чтобы определить, systemdдействительно ли нужно перезапускать, вы можете проверить вывод lsof -p1 | grep deleted: systemdиспользует библиотеку, libsystemd-sharedкоторая поставляется в том же пакете и, таким образом, обновляется вместе с демоном, поэтому при systemdнеобходимости перезапуска вы увидите ее, используя удаленную версию библиотеки. Если lsofпоказывает, что удаленных файлов systemdнет, перезапускать не нужно. (БлагодаряДжефф Шаллер за подсказку!)
daemon-reexecдолжен работать даже сsystemdpid 1.