%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
.