@ 기호와 systemctl 및 vsftpd


27

두 가지 질문이 있습니다.

  1. systemctl 스크립트에서 @ 기호의 의미는 무엇입니까?

  2. fedora 16에서 vsftpd를 시작하는 방법 (일부 자습서에서는 이름에 @이 포함 된 것으로 보임)? 튜토리얼에서 말한 모든 것을 수행했지만 여전히 오류가 발생합니다. http://blog.tuxforge.com/fedora-16-vsftpd/

내가 한 것

systemctl enable vsftpd@.service

내가 보는 것

Failed to issue method call: No such file or directory

(나는 이것을 절대 경로로 시도했지만 확인한 후에는 그런 파일이 없습니다. 실제 파일에는 @ 기호가 없으며 / lib / systemd / system / 디렉토리 아래에 있습니다. 또한 시도했습니다 @ 기호를 사용하거나 사용하지 않고 시작하고 활성화하면 작동하지만 시작하지 않습니다. 기사가 더 이상 사용되지 않지만 여전히 서비스를 시작할 수는 없습니다. 연결하려고 할 때 연결되지 않습니다)

편집 : 어떻게 든 서비스를 시작했지만 여전히 일부 서비스 이름에서 @ 기호의 의미를 알고 싶습니다. 또한 여전히 로그인 오류 번호 # 500이 디렉토리 [...]를 변경할 수 없습니다. 이것은 무엇을 의미합니까?

시작하려면 방금 입력했습니다.

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)

답변:


48

@심볼은 특수 서비스, 소켓 및 여러 인스턴스를 실행할 수있는 기타 장치를 나타냅니다.

예를 들어, getty@.service텍스트 로그인 터미널을 제공하는 서비스입니다. 당신이 키를 누르면 Ctrl+ Alt+ F2, getty@tty2.service가상 터미널 # 2를 만들어 시작됩니다.

이 기능을 사용하는 다른 서비스는 OpenVPN입니다. /etc/openvpn/work.conf직장에서 VPN에 systemctl start openvpn@work.service연결 한 다음 연결하도록 파일을 만들 수 있습니다 . 마찬가지로 집에 VPN이 있으면를 /etc/openvpn/home.conf만든 다음 시작할 수 있습니다 openvpn@home.service. 이렇게하면 .service연결하는 모든 VPN에 대해 파일 을 만들 필요가 없습니다.

그러나 내 말을 받아들이지 마십시오. 사용해보십시오! syslog에 메시지를 출력하는 간단한 서비스를 만들어 봅시다. /etc/systemd/system/echo@.service다음 내용 으로 파일 을 작성하십시오 .

[Unit]
Description=Echo '%I'

[Service]
Type=oneshot
ExecStart=/bin/echo %i
StandardOutput=syslog

예고 %i? systemd는 @서비스가 시작될 때 기호 뒤에 나오는 내용으로 채 웁니다 . 따라서 시작해보십시오 echo@foo.service.

systemctl start echo@foo.service

그런 다음 저널을 확인하십시오 .

 journalctl -n10

맨 아래에 systemd가 실행되었음을 알 수 있습니다 /bin/echo foo.

Feb 24 12:41:01 localhost echo[8412]: foo

이제 시도하십시오 systemctl start echo@bar.service. 이번에는 systemd가로 채워 지므로 다음 %ibar같이 표시됩니다.

Feb 24 12:42:51 localhost echo[8432]: bar

그게 다야! @systemd %i는 서비스 정의에서 단지 그것을 대체하기 때문에 모든 것이 잠재적으로 부호 뒤에 올 수 있습니다. OpenVPN은 구성에 사용하고 다른 서비스는 포트 번호와 같은 다른 용도로 사용할 수 있습니다.

자세한 내용은를 참조하십시오 man systemd.unit.


1
@ 기호를 제외하고 일반 서비스처럼 시작 및 중지 되었습니까? 예를 들어 서비스를 다시 시작해야한다면 다시 시작 하시겠습니까? 여러 인스턴스를 어떻게 시작합니까?
rubixibuc

예, @기호 뒤에 나오는 텍스트를 적절한 것으로 변경하십시오 . 어떻게 작동하는지 테스트하기 위해 예제를 추가했습니다.
Patches

@Patches : "@ 기호는 여러 인스턴스를 실행할 수있는 특수 서비스에 대한 문서"는 어디에 있습니까? freedesktop.org/software/systemd/man/systemd.service.html
pevik

systemd.unit에 설명되어 있습니다 . 소켓 및 기타 유형의 장치 에도 유용합니다 . (지금 답변에 추가되었습니다. 감사합니다. :-)
Patches
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.