일부 유닛 파일 이름이 @로 끝나는 이유는 무엇입니까?

일부 유닛 파일 이름이 @로 끝나는 이유는 무엇입니까?

SSH와 같은 일부 애플리케이션에는 및 와 같이 @로 끝나는 단위 파일이 ssh.service있습니다 [email protected]. 내용이 다르지만 기능이나 목적의 차이가 정확히 무엇인지는 모르겠습니다.

이것이 내가 모르는 명명 규칙입니까?

답변1

다른 사람들이 언급했듯이 이는 서비스 템플릿입니다. 어떤 경우에는 클래식 서비스 방식으로 요청 시 호출하는 [email protected]데에만 사용됩니다 .sshdinetd

SSH 연결을 거의 사용하지 않을 것으로 예상되고 sshd시스템 리소스 사용량(예: 내장형 시스템)을 완전히 줄이려는 경우 일반 연결을 비활성화 하고 그런 다음 들어오는 TCP 포트 22(표준 SSH 포트)가 활성화될 때마다 ssh.service활성화 할 수 있습니다. ssh.socket감지되면 연결되면 소켓이 자동으로 인스턴스를 시작 [email protected](실행)합니다. 이렇게 하면 SSH 로그인 프로세스가 느려지지만 인바운드 SSH 연결이 없을 때는 실행할 필요가 없습니다 sshd -i.sshd

답변2

템플릿은 다음과 같습니다.https://www.freedesktop.org/software/systemd/man/systemd.service.html#Service%20템플릿

[email protected]링크 소스 위치에 대한 링크를 생성하여 인스턴스화됩니다 [email protected]. 시스템 단위 파일을 사용하거나 사용할 instance수 있으며 매개변수와 함께 여러 번 사용할 수 있는 단일 단위 구성 파일을 작성할 수 있습니다.%i%I

systemd에 대한 가장 명확한 문서는 "서비스 템플릿"이지만 systemd.unit(5) 매뉴얼 페이지에 설명된 대로 모든 단위 유형을 템플릿으로 지정할 수 있습니다.https://www.freedesktop.org/software/systemd/man/systemd.unit.html

답변3

이것들은 모두서비스 템플릿는 매개변수를 사용하여 인스턴스화되도록 설계되었습니다(따라서 서비스는 template@argument지정된 매개변수를 사용하여 실행됩니다). template@따라서 하드 코딩된 세부 정보 없이 단일 서비스 정의를 다양한 상황에서 사용할 수 있습니다.

인스턴스화된 일반적인 서비스는 systemd-fsck@서비스, 장치별 getty, 사용자별 사용자 관리자( user@) 등과 같은 파일 시스템별 서비스입니다. 템플릿이 아닌 서비스와 동일한 방식으로 설정, 사용 등이 가능 systemctl enable하지만 대부분은 다른 서비스에 의해 동적으로 인스턴스화됩니다.

답변4

일부 단위 이름에는 @기호(예 [email protected]: )가 포함되어 있습니다.템플릿 단위의 실제 파일 이름에는 이 string부분이 포함되어 있지 않습니다(예 [email protected]: ). string라고인스턴스 식별자, 다음을 사용하여 호출할 때 템플릿 단위에 전달되는 인수와 유사합니다.시스템 제어%i명령: 단위 파일에서 지정자를 대체합니다 . 보다 정확하게는 systemd는 실제로 템플릿 유닛을 인스턴스화하기 전에 정확한 파일 이름을 가진 유닛을 [email protected]찾습니다 . 그러나 관례상 이러한 "충돌"은 거의 발생하지 않습니다. 즉, 기호를 포함하는 대부분의 유닛 파일은 template이어야 합니다.[email protected]@

원천

관련 정보