systemd는 패키지 구성 단위 파일을 재정 의하여 서비스 구성 / 동작에 영향을주는 훌륭한 메커니즘을 제공한다는 것을 알고 있습니다. 이것은 일반적으로 아래 명령을 사용하여 수행됩니다
sudo systemctl edit <unitfile>
에 대체 conf 파일을 만들려면
/etc/systemd/system/<unitfile.d>/
Systemd는 템플릿 단위 파일을 정의하고 런타임에 인스턴스 별 단위를 생성하도록 인스턴스화하는 별도의 메커니즘도 제공합니다. 템플릿 파일 이름을 다음과 같이 지정해야합니다.
<servicename>@.service
다음으로 인스턴스화
systemctl start <servicename>@<instancename>
이제 패키지 제공 서비스를 여러 단위 인스턴스로 실행하려는 상황이 있습니다. 자체 템플릿 단위 파일을 만들지 않기 위해 패키지 제공 단위 파일을 재정 의하여 템플릿 단위 파일을 만들 수 있는지 확인하려고합니다.
내 이해에 따라 템플릿 단위 파일에는 일반 단위 파일과 다른 이름 지정 규칙이 있으므로 패키지 제공 단위 파일을 템플릿 파일로 / etc / systemd / system에 배치하여 재정의 할 수 없다고 생각합니다.
내가하려는 일을 달성 할 수있는 정의 된 방법이 있습니까?
특정 시나리오 : grafana 패키지는 grafana-server.service 단위 파일을 설치합니다. DEV와 STG 각각에 대해 두 개의 grafana 인스턴스를 내 컴퓨터에서 실행하고 싶습니다. 나는 이것을 할 수 있었다 :
- grafana-server.service 파일 수정 (% I를 사용하여 폴더 위치 및 파일 경로 설정)
- 수정 된 grafana-server.service의 이름을 grafana-server @ .service로 바꾸십시오.
다음을 사용하여 grafana 인스턴스를 시작하십시오.
sudo systemctl start grafana-server@dev
과
sudo systemctl start grafana-server@stg
그러나 이것은 grafana 제공 서비스 단위 파일의 링크를 끊어 업그레이드 할 때 서비스 파일을 향상시키는 경우이 활동을 다시 다시 실행해야합니다. 내 목표는 이러한 직접 종속성을 피하고 대신 재정의 종속성으로 변환하는 것입니다.
이견있는 사람?