템플릿 종속성을 참조할 때 시스템 인스턴스 이름 지정자 %i가 중복됩니까?

템플릿 종속성을 참조할 때 시스템 인스턴스 이름 지정자 %i가 중복됩니까?

%i다른 템플릿 기반 서비스를 참조할 때 템플릿에서 인스턴스 이름 지정자( )를 사용해야 합니까, 아니면 인스턴스 이름이 추론된다고 가정할 수 있습니까?

많은이 패턴(예 Requires=bottom@%i.service: )을 따르지만 이것이 %i꼭 필요한 것은 아니며 이 패턴 없이도 모든 것이 잘 작동하는 것 같습니다.

> cd ~/.config/systemd/user

> cat [email protected]
[Unit]
# Wants=middle@%i.service
[email protected]

> cat [email protected]
[Unit]
# Requires=bottom@%i.service
[email protected]
[Service]
ExecStart=/usr/bin/sh -c "echo middle"

> cat [email protected]
[Service]
ExecStart=/usr/bin/sh -c "echo bottom"

> systemctl --user start [email protected]

> journalctl --user -f
Nov 17 22:21:02 miles-desk systemd[3064]: Starting [email protected]...
Nov 17 22:21:02 miles-desk sh[4010694]: bottom
Nov 17 22:21:02 miles-desk systemd[3064]: Starting [email protected]...
Nov 17 22:21:02 miles-desk systemd[3064]: Finished [email protected].
Nov 17 22:21:02 miles-desk sh[4010695]: middle
Nov 17 22:21:02 miles-desk systemd[3064]: Finished [email protected].

%i템플릿에서 지정자를 생략해도 안전합니까? 그렇다면 왜 이 약어가 포함된 예를 찾을 수 없는지 혼란스럽습니다. 주의가 필요한 문제가 있나요? 이에 대한 사용 지침을 찾지 못했습니다.문서.

답변1

Requires외.템플릿을 직접 처리합니다.

소스 유닛이 템플릿인 경우 대상도 템플릿일 수 있으며, 이 경우 인스턴스는 대상 유닛에 "전파"되어 유효한 유닛 인스턴스를 형성합니다.

반대로RequiredBy가족과 함께:

템플릿 단위는 템플릿 단위를 나열할 수도 있으며, 이 경우 나열된 단위의 각 인스턴스가 동일한 인스턴스 값을 가진 나열된 템플릿의 인스턴스에 대한 종속성을 갖게 되는 범용 종속성이 추가됩니다.

따라서 이 용도에서는 생략하는 것이 안전합니다 %i.

관련 정보