Các tập tin đơn vị systemd có phải được tải lại khi sửa đổi không?


138

Hãy nói rằng tôi viết một mine.servicetập tin. Sau đó tôi sử dụng systemctl enable mine.service.

Nếu sau này tôi quyết định chỉnh sửa mine.service, tôi có phải nói systemdrằng mine.serviceđã thay đổi không? Nếu vậy, làm thế nào để tôi làm điều đó?

Câu trả lời:


169

Sau khi bạn thay đổi tệp đơn vị của mình, bạn nên chạy systemctl daemon-reload, như được nêu ở đây .

daemon-tải
lại cấu hình trình quản lý systemd. Điều này sẽ chạy lại tất cả các trình tạo (xem systemd.generator (7) ), tải lại tất cả các tệp đơn vị và tạo lại toàn bộ cây phụ thuộc. Trong khi daemon đang được tải lại, tất cả các socket systemd thay mặt cho cấu hình người dùng sẽ vẫn có thể truy cập được.

Sau đó, bạn có thể khởi động lại (hoặc tải lại) dịch vụ của mình theo ý muốn

systemctl restart your-service-name

(daemon-reload sẽ không tải lại / tự khởi động lại các dịch vụ, chỉ cần làm cho hệ thống biết về cấu hình mới)


2
Tôi thấy tôi cũng cần chạy một systemctl restartđể thực sự tự khởi động lại dịch vụ ...
hwjp

3
Trong trường hợp, daemon-reloadkhông phải là phổ quát, phải chạy systemctl --user daemon-reloadcho các dịch vụ người dùng.
Olegs Jeremejevs

Như một lưu ý, nó cũng "xóa cấu hình trước đó được tạo bởi các trình tạo" trước khi chạy lại chúng: freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpack

8

Ngoài ra với câu trả lời ở trên: Trong trường hợp bạn đã thay đổi điều gì đó trong lệnh [Install], bạn có thể cần phải chạy sudo systemctl reenable YOURUNITFILEđể tạo lại các liên kết tượng trưng trong thư mục .target.


Điều này đã lừa tôi! Không hiểu tại sao systemctl không tải lại tệp dịch vụ.
antonagestam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.