![동일한 인스턴스 지정자를 사용하여 여러 시스템 단위 파일을 활성화하는 방법은 무엇입니까?](https://linux55.com/image/92563/%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%20%EC%A7%80%EC%A0%95%EC%9E%90%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%AC%EB%9F%AC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EB%8B%A8%EC%9C%84%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
인스턴스화된 시스템 서비스를 활성화할 때마다 동일한 인스턴스 지정자를 사용하여 두 개의 타이머를 활성화하고 싶습니다. 이것은 내 유닛 파일입니다[이메일 보호됨]좋다:
[Unit]
Description=Does something cool
Documentation=man:foo(1)
[Service]
Type=forking
ExecStart=/usr/bin/foo %i
PIDFile=%t/foo/foo.pid
StandardOutput=journal
[Install]
WantedBy=network-online.target
Also=bar1@%i.timer
Also=bar2@%i.timer
실행 결과:systemctl enable [email protected]
Failed to enable unit: Invalid argument
[Install] 섹션에서 인스턴스 지정자를 제거하고 이를 특정 인스턴스 이름(아래 표시된 대로)으로 바꾸면 제대로 작동합니다.
...
[email protected]
[email protected]
매뉴얼 페이지시스템 유닛(5)설명하다%나지정자는 설치 부분에서 설명했는데 무엇이 주어지나요?
The following specifiers are interpreted in the Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b, %v.
답변1
이는 systemd의 버그인 것으로 보이며 섹션 Also
의 지시문에서 재현 됩니다 [Install]
.
그러나 해결 방법을 사용하여 동일한 기능을 제공할 수 있습니다.
파일이 있고 [email protected]
해당 유닛 파일이 필요하다고 가정해 보겠습니다. 대신 이 절을 지시어에 추가하세요 WantedBy
. .timer
먼저 등을 사용하여 장치를 활성화하십시오.systemctl enable [email protected]
[Install]
WantedBy=network-online.target bar1@%i.timer bar2@%i.timer
위 코드는 소켓 활성화를 통해 여러 mpd 서비스를 시작하기 위해 서비스 템플릿과 여러 소켓 파일을 사용하여 제대로 작동합니다.