두 가지 버전의 서비스가 있는데 가끔 my-service-a와 my-service-b 사이를 전환하고 싶습니다. my-service-a가 시스템이 시작될 때 항상 실행되는 서비스가 되기를 바랍니다. 현재 이들 사이를 전환하려면 a에서 b로 전환하는 등 여러 명령을 실행해야 합니다.
systemctl stop my-service-a
systemctl start my-service-b
그리고 systemd는 한 번에 하나만 실행되도록 강제하지 않습니다. 단지 조심해야 합니다.
systemd에서 이 상황에 대한 직접적인 지원이 있습니까? 이것을 서비스 간 "전환" 지원 또는 템플릿 서비스 인스턴스화라고 생각할 수도 있고, 상호 배타적인 서비스에 대한 지원이라고 생각할 수도 있으므로 my-service-b를 시작하면 my -service-a가 자동으로 중지됩니다. . 아니면 완전히 다른 방법이 있을 수도 있습니다.
답변1
Conflicts=
두 유닛 파일의 섹션 에 지시문을 추가 하면 [Unit]
됩니다 ( Conflicts=
하나의 유닛 파일에서도 작동함). 매뉴얼 페이지에서시스템 유닛(5):
공백으로 구분된 단위 이름 목록입니다. 부정적인 요구 사항 종속성을 구성합니다. 한 유닛이 다른 유닛에 충돌=을 설정한 경우 전자를 시작하면 후자는 중지되고 그 반대의 경우도 마찬가지입니다. 이 설정은 After= 및 Before= 순서 종속성과 독립적이며 직교합니다.