Để khởi động lại daemon, hãy chạy
systemctl daemon-reexec
Đây là tài liệu trong các systemctl
manpage :
Xem lại trình quản lý systemd. Điều này sẽ tuần tự hóa trạng thái người quản lý, xem xét lại quy trình và giải tuần tự hóa lại trạng thái. Lệnh này ít được sử dụng trừ việc gỡ lỗi và nâng cấp gói. Đôi khi, nó có thể hữu ích như một trọng lượng nặng daemon-reload
. Trong khi daemon đang được thực hiện lại, tất cả các socket hệ thống nghe thay mặt cho cấu hình người dùng sẽ vẫn có thể truy cập được.
Thật không may, không needs-restarting
thể xác định rằng systemd
đã thực sự khởi động lại. systemd
execs
chính nó để khởi động lại, mà không thiết lập lại thời gian bắt đầu của quá trình; nhưng needs-restarting
so sánh thời gian sửa đổi của thực thi với thời gian bắt đầu của quy trình để xác định xem có cần khởi động lại một quy trình hay không (và trong số những thứ khác), và kết quả là nó luôn luôn systemd
cần phải khởi động lại ... Để xác định xem có systemd
thực sự cần phải khởi động lại hay không, bạn có thể kiểm tra đầu ra của lsof -p1 | grep deleted
: systemd
sử dụng một thư viện, libsystemd-shared
được gửi trong cùng một gói và do đó được nâng cấp cùng với trình nền, vì vậy nếu systemd
cần được khởi động lại, bạn sẽ thấy nó sử dụng phiên bản thư viện đã xóa. Nếu lsof
hiển thị không có tập tin bị xóa, systemd
không cần phải khởi động lại. (Nhờ vàoJeff Schaller cho gợi ý!)
daemon-reexec
được cho là hoạt động ngay cả vớisystemd
tư cách là 1.