저는 일반적인 시스템 서비스를 만드는 데 익숙합니다. 그러나 Wireguard 구성 방법을 배우던 중 서비스 이름에서 "@" 기호를 발견하고 이것이 정확히 어떻게 작동하는지 궁금했습니다.
예를 들어, wireguard에서는 연결을 구성한 /etc/wireguard/wg0.conf
다음 자체 서비스 파일이 있는 것처럼 실행하여 연결을 제어할 수 있습니다. 라는 두 번째 프로필을 만드는 경우 을 전달할 수 있습니다.sudo systemctl [enable|disable|start|stop|whatever] [email protected]
wg1.conf
[email protected]
이 모든 것이 매우 편리합니다. 그런데 어떻게 작동하나요? 이것을 무엇이라고 부르나요?
답변1
@
SystemD 서비스의 기호는 다양한 구성/대상을 가진 여러 개의 동일한 서비스를 가질 수 있도록 변수를 사용하는 서비스를 만드는 데 사용됩니다.
따라서 이 경우 구성을 차별화할 수 있지만 다른 많은 것(예: ceph)에서 사용되어 여러 개의 동일한 서비스를 실행할 수 있지만 서로 다른 리소스를 제공할 수 있습니다.
기본적으로 시스템 서비스 파일을 생성할 때 이를 사용하면 기호 뒤에 오는 모든 항목이 %i
대체됩니다 .@
@
따라서 아래와 같이 다음 콘텐츠만 에코하는 일회성 서비스를 만들 수 있습니다.
[Unit]
Description=Echo '%I'
[Service]
Type=oneshot
ExecStart=/bin/echo %i
StandardOutput=syslog
그 이후에 입력하는 모든 내용은 @
시스템 로그에 기록됩니다.
도움이 되었기를 바랍니다!