Tôi biết rằng systemd cung cấp một cơ chế tuyệt vời để ghi đè tệp đơn vị được cung cấp gói để ảnh hưởng đến cấu hình / hành vi dịch vụ. Điều này thường được thực hiện bằng cách sử dụng lệnh dưới đây
sudo systemctl edit <unitfile>
để tạo một tập tin conf ghi đè tại
/etc/systemd/system/<unitfile.d>/
Systemd cũng cung cấp một cơ chế riêng để xác định tệp đơn vị mẫu và khởi tạo nó để tạo các đơn vị cụ thể trong thời gian chạy. Điều này đòi hỏi phải đặt tên tệp mẫu là
<servicename>@.service
và sau đó khởi tạo nó như là
systemctl start <servicename>@<instancename>
Bây giờ, tôi có một tình huống mà tôi muốn chạy một dịch vụ được cung cấp theo gói như nhiều trường hợp đơn vị. Tôi muốn tránh tạo tệp đơn vị mẫu của riêng mình, vì vậy tôi đang cố gắng xem liệu tệp đơn vị được cung cấp gói có thể được ghi đè để tạo tệp đơn vị mẫu không.
Vì theo hiểu biết của tôi, tệp đơn vị mẫu có quy ước đặt tên khác với tệp đơn vị thông thường, tôi nghĩ rằng tôi không thể ghi đè tệp đơn vị được cung cấp gói bằng tệp mẫu bằng cách đặt nó vào / etc / systemd / system.
Có cách nào xác định để đạt được những gì tôi đang cố gắng làm không?
Kịch bản cụ thể: Gói grafana cài đặt tệp đơn vị grafana-server.service. Tôi muốn chạy hai phiên bản grafana trên máy của mình - mỗi phiên bản cho DEV và STG. Tôi đã có thể làm điều này:
- sửa đổi tệp grafana-server.service (sử dụng% I để đặt vị trí thư mục & đường dẫn tệp)
- đổi tên grafana-server.service đã sửa đổi thành grafana-server @ .service
bắt đầu các trường hợp của grafana bằng cách sử dụng:
sudo systemctl start grafana-server@dev
và
sudo systemctl start grafana-server@stg
Tuy nhiên, điều này phá vỡ liên kết từ tệp đơn vị dịch vụ do grafana cung cấp và nếu họ nâng cao tệp dịch vụ khi tôi nâng cấp, tôi sẽ cần làm lại hoạt động này một lần nữa. Mục tiêu của tôi là để tránh sự phụ thuộc trực tiếp này, và thay vào đó chuyển đổi nó thành một phụ thuộc ghi đè.
Có suy nghĩ gì không?