Cách tắt dịch vụ mà không cần sử dụng 'vô hiệu hóa systemctl'


12

Có một dịch vụ tôi chỉ muốn chạy khi một dịch vụ khác không thành công ( [Unit] OnFailure=foo), nhưng tôi không muốn dịch vụ này ( foo) tự động khởi động khi khởi động. Một tùy chọn đang chạy systemctl disable foo, nhưng tôi đang tìm cách khác.

Bối cảnh: Tôi đang tạo một hình ảnh hệ điều hành và tôi không muốn phải khởi động máy, chạy lệnh đó ( systemctl disable foo), sau đó tắt nó trước khi tuyên bố hình ảnh cuối cùng của tôi.

Câu trả lời:


4

Tất cả các dịch vụ được "vô hiệu hóa" theo mặc định; "Hỗ trợ" là chọn tham gia.

Nếu foo.servicelà dịch vụ tùy chỉnh của bạn, thì nó sẽ không được bắt đầu trừ khi được một thứ gì đó (như OnFailure=chỉ thị) rút ra một cách rõ ràng và bạn không nên "vô hiệu hóa" bất cứ điều gì.


Vì vậy, về cơ bản, bạn "có được chức năng này miễn phí" trừ khi foo đã được kích hoạt trước đó?
rogerdpack

26

systemctl enablehoạt động bằng cách thao tác các liên kết tượng trưng trong /etc/systemd/system/(đối với trình nền hệ thống). Khi bạn enablelà một dịch vụ, nó sẽ xem xét các WantedBydòng trong [Install]phần này và đặt các liên kết tượng trưng trong các .wantsthư mục đó.

systemctl disable làm ngược lại.

Bạn chỉ có thể loại bỏ những liên kết tượng trưng mà làm bằng tay hoàn toàn tương đương với việc sử dụng systemctl disable.


Đây sẽ là một dịch vụ chưa được chạy bởi systemd (tùy chỉnh), do đó sẽ không có bất kỳ liên kết bổ sung nào. Tôi đoán những người sẽ được tạo ra trong lần khởi động đầu tiên?
tshepang

3
@Tshepang không nên kích hoạt trừ khi bạn bật thủ công (hoặc trong tập lệnh, tất nhiên)
derobert

1
Ồ, tôi cho rằng nó sẽ được kích hoạt tự động (đó là điều tôi mong đợi bằng cách cài đặt các gói Debian). Tốt để biết.
tshepang

3
@Tshepang đó là tập lệnh postinst trong gói đang kích hoạt. Hoặc tôi đoán vận chuyển các liên kết tượng trưng trong gói, không chắc họ có làm điều đó không.
derobert

4

Bạn có thể sử dụng systemctl start ServiceName.servicesystemctl stop Service.Name.serviceđể bắt đầu và dừng một dịch vụ tương ứng. Ngược lại systemctl enable ...systemctl disable ..., các lệnh bắt đầu và dừng chỉ tồn tại trong phiên hiện tại, do đó khi bạn khởi động lại máy, các thay đổi sẽ không được lưu.

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.