Có nhiều lý do để đổi tên dịch vụ systemd trong sản xuất. Ví dụ:
- để phân biệt nó tốt hơn với một cái mới
- bởi vì ông chủ của bạn đã ra lệnh cho nó
- vì các tập lệnh kế thừa
- ...
Giả sử một dịch vụ chung mới được tạo trong /etc/systemd/system/foo.service
và kích hoạt và bắt đầu như sau: [1]
systemctl daemon-tải lại
kích hoạt systemctl --now foo
Sau đó, bạn có thể muốn đổi tên nó từ foo.service
đến thanh.dịch vụ
mà không ảnh hưởng đến quá trình liên quan theo bất kỳ cách nào.
Trong trường hợp bình thường, bạn chỉ có thể làm một cái gì đó như thế này:
mv foo.service bar.service
systemctl daemon-tải lại
systemctl vô hiệu hóa foo
thanh kích hoạt systemctl
Sau đó, bạn có được:
trạng thái systemctl foo
: đang chạy
không tìm thấy
Vô hiệu hóa
thanh trạng thái systemctl
: không chạy
kích hoạt
Vì vậy, bạn có thể muốn khắc phục bằng:
systemctl dừng foo
thanh bắt đầu systemctl
Hoặc với một khởi động lại. Tuy nhiên, trong môi trường sản xuất, điều này không khả thi vì bạn không muốn dừng ứng dụng vì thay đổi đó. Ngoài ra, việc khởi động lại được lên lịch sau nhiều tháng hoặc nhiều năm. Đồng thời, sẽ rất rủi ro nếu duy trì một dịch vụ đã ngừng hoạt động trong một thời gian dài như quán ba
không nên bắt đầu do nhầm lẫn trước khi dừng chạy không tìm thấy foo
.
Nói ngắn gọn. Bạn sẽ sử dụng phương pháp nào để đổi tên dịch vụ systemd trong sản xuất?
Điều kiện lý tưởng là có hai dịch vụ tương thích ngược. Như vậy, dừng foo
cũng dừng lại quán ba
và ngược lại.