Untuk me-restart daemon, jalankan
systemctl daemon-reexec
Hal ini didokumentasikan di dalam systemctl
manualnya :
Menjalankan kembali manajer systemd. Ini akan membuat serial keadaan manajer, jalankan kembali proses dan deserialize negara lagi. Perintah ini tidak banyak berguna kecuali untuk debugging dan peningkatan paket. Terkadang, mungkin bermanfaat sebagai beban berat daemon-reload
. Ketika daemon sedang dieksekusi kembali, semua soket systemd yang mendengarkan atas nama konfigurasi pengguna akan tetap dapat diakses.
Sayangnya needs-restarting
tidak dapat menentukan bahwa systemd
sebenarnya sudah dimulai ulang. systemd
execs
itu sendiri untuk me-restart, yang tidak mengatur ulang waktu mulai proses; tetapi needs-restarting
membandingkan waktu modifikasi yang dapat dieksekusi dengan waktu mulai proses untuk menentukan apakah suatu proses perlu di-restart (di antara hal-hal lain), dan sebagai hasilnya ia selalu menganggap bahwa systemd
perlu di-restart ... Untuk menentukan apakah systemd
benar-benar perlu di-restart, Anda dapat memeriksa output dari lsof -p1 | grep deleted
: systemd
using a library,, libsystemd-shared
yang dikirimkan dalam paket yang sama dan dengan demikian ditingkatkan bersama dengan daemon, jadi jika systemd
perlu dimulai ulang Anda akan melihatnya menggunakan versi pustaka yang dihapus. Jika lsof
tidak ada file yang dihapus, systemd
tidak perlu dimulai ulang. (Terimakasih untukJeff Schaller untuk petunjuknya!)
daemon-reexec
seharusnya bekerja bahkan dengansystemd
pid 1.