Щоб перезапустити демон, запустіть
systemctl daemon-reexec
Це відображено в на systemctl
сторінках керівництва :
Заново виконайте системний менеджер. Це дозволить серіалізувати стан менеджера, відновити процес і знову дезаріалізувати стан. Ця команда малокорисна, за винятком налагодження та оновлення пакетів. Іноді це може бути корисним як великоваговик daemon-reload
. Поки демон демонструється, усі сокети, які систематизовано слухати від імені користувальницької конфігурації, залишатимуться доступними.
На жаль, needs-restarting
не можна визначити, що systemd
насправді перезапустили. systemd
execs
перезапустити себе, що не скидає час початку процесу; але needs-restarting
порівнює час модифікації виконуваного файлу з часом початку процесу, щоб визначити, чи потрібно процес перезапустити (серед іншого), і як результат, він завжди вважає, що systemd
його потрібно перезапустити ... Щоб визначити, чи systemd
дійсно потрібно перезапустити, Ви можете перевірити вихід lsof -p1 | grep deleted
: systemd
використовує бібліотеку, libsystemd-shared
яка постачається в одному пакеті і, таким чином, модернізується разом з демоном, тому, якщо systemd
потрібно буде перезапустити, ви побачите його, використовуючи видалену версію бібліотеки. Якщо lsof
не показано видалених файлів, systemd
його не потрібно перезавантажувати. (ЗавдякиДжефф Шаллер для підказки!)
daemon-reexec
як передбачається, працює навіть зsystemd
pid 1.