여러 대상에는 Systemd 서비스가 필요합니다.

여러 대상에는 Systemd 서비스가 필요합니다.

설치 시 모든 위치에 심볼릭 링크가 생성되도록 여러 대상(또는 여러 설치 지침이 있음)에 필요한 서비스를 만드는 방법이 있습니까?

내 예는 다음 시스템 파일입니다

[Unit]
Description=Run script to fix-audio mappings

[Service]
Type=forking
ExecStart=/bin/bash -c '/usr/local/bin/fix-audio &'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

그것이 하는 일은 내 컴퓨터의 오디오 매핑을 수정하는 스크립트를 실행하는 것입니다(그것이 없으면 사운드는 서브우퍼에서만 나오므로 꽤 쓸모가 없습니다). 불행하게도 매핑은 절전/일시 중지/최대 절전 모드 후에 재설정되는 것 같으므로 절전 모드에서 깨어날 때에도 이 스크립트를 트리거해야 합니다.

할 말 WantedBy=multi-user.target,sleep.target이나 비슷한 게 있나요?

이에 대한 문서를 찾을 수없는 것 같습니다. 아니면 필요한 것을 달성할 수 있는 더 좋은 방법이 있습니까?

답변1

네, 있습니다. 관련 부분을 인용해 보세요.system.unit의 매뉴얼 페이지:

WantedBy=, RequiredBy=이 옵션은 여러 번 사용하거나 공백으로 구분된 단위 이름 목록을 제공할 수 있습니다. 장치가 설치되면 나열된 각 장치의 .wants/ 또는 .requires/ 디렉터리에 심볼릭 링크가 생성됩니다.시스템 제어 활성화. 이는 Wants=유형의 종속성을 추가하거나 Requires=나열된 단위에서 현재 단위로 추가하는 효과가 있습니다. 주요 결과는 나열된 장치가 시작될 때 현재 장치가 시작된다는 것입니다. Wants=자세한 내용은 [단위] 섹션의 및 설명을 참조하세요 .Requires=

WantedBy=foo.service서비스에서는 bar.service주로 다음과 같습니다. 별칭=foo.service.wants/bar.service같은 파일에. 템플릿 단위인 경우,시스템 제어 활성화인스턴스 이름으로 호출해야 하며 인스턴스는 나열된 장치 목록에 추가됩니다 .wants/. .requires/예를 들어WantedBy=getty.target서비스를 제공하면 다음과 같은 결과가 [email protected]발생합니다.시스템 제어 활성화[이메일 보호됨] 링크를 만듭니다.getty.target.wants/[email protected][email protected]

그러나 여러 대상에 대해 이 명령을 실행하려면 필요한 경우 Before=또는 After=지시어를 통해 순서(예: 종료 또는 일시 중지)를 조정해야 합니다(이 내용은 매뉴얼 페이지에도 설명되어 있습니다;).

관련 정보