SSH와 같은 일부 애플리케이션에는 및 와 같이 @로 끝나는 단위 파일이 ssh.service
있습니다 [email protected]
. 내용이 다르지만 기능이나 목적의 차이가 정확히 무엇인지는 모르겠습니다.
이것이 내가 모르는 명명 규칙입니까?
답변1
다른 사람들이 언급했듯이 이는 서비스 템플릿입니다. 어떤 경우에는 클래식 서비스 방식으로 요청 시 호출하는 [email protected]
데에만 사용됩니다 .sshd
inetd
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]
@