2017-01-13 21 views
0

여러 인스턴스를 실행할 수있는 Upstart 서비스가 있습니다. 두 개의 동적 매개 변수를 임의의 조합으로 지정할 수 있습니다.동적 인스턴스가있는 Upstart 구성을 Systemd 서비스로 변환

systemd .service 파일로 변환 할 수있는 방법이 있습니까?

start on (net-device-up and local-filesystems and runlevel [2345]) 
stop on runlevel [016] 

instance $C,$B 

exec [...] $C $B 

respawn 

답변

2

systemd는 단일 템플릿을 사용하여 서비스 인스턴스를 여러 개 실행하는 데 사용할 수있는 템플릿을 지원합니다. man systemd.unit의 문서에서 :

선택적으로, 단위가 runtie의 템플릿 파일에서 인스턴스화 될 수 있습니다. 이를 통해 단일 구성 파일에서 복수 단위 을 작성할 수 있습니다. systemd가 유닛 구성 파일을 찾으면, 은 먼저 파일 시스템에서 리터럴 유닛 이름을 검색합니다. tat가 성공하지 않고 유닛 이름에 "@"문자가 포함되어 있으면 systemd는 동일한 이름을 공유하지만 인스턴스 문자열 (예 : "@"문자와 접미사 사이의 부분)이 제거 된 동일한 이름을 가진 unittemplate을 찾습니다. 예 : 서비스 [email protected]가 요청되고 해당 이름의 파일이없는 경우 systemd는 getty @ .service를 찾고 해당 configuratin 파일이 발견되면 서비스를 인스턴스화합니다.

구성 파일에서 인스턴스 문자열을 참조하려면 많은 구성 옵션에서 특별한 "% i"지정자를 사용할 수 있습니다. 처럼 보일 수 있습니다 동적 매개 변수 "C"와 "B"에 대한 서비스를 시작하는 사용자의 경우

:

systemctl start [email protected] 

systemd는 인스턴스 이름에 하나 개의 변수는 사용자가 작성해야 할 수 있습니다 지원하기 때문에 기본 서비스로 전달하기 위해 "bc"의 인스턴스 이름을 "b"및 "c"의 값으로 분리하는 랩퍼 쉘 스크립트.