내 Arch Linux의 Systemd가 rpcbind
자동으로 시작됩니다. systemd
이 일을 멈추려면 어떻게 해야 합니까 ? 에는 원격 파일 시스템이 없습니다 /etc/fstab
. rpcbind가 시작되는 유일한 이유는 다중 사용자 대상에 필요하지만 디렉터리에 서비스가 없기 때문입니다. 실제로 시작되는 이유를 어떻게 알 수 있나요?
답변1
하나 있다Arch Tracker에서 버그 보고 열기.
가장 좋은 방법은 서비스를 가리는 것입니다.
systemctl mask rpcbind.service
Lennart Poettering의 블로그 게시물 시리즈를 참조하세요.관리자를 위한 시스템, 5부차단에 대한 세부정보:
3. 서비스를 차단할 수 있습니다. 이는 서비스를 비활성화하는 것과 같지만 스테로이드입니다. 서비스가 더 이상 자동으로 시작되지 않도록 할 뿐만 아니라 서비스가 더 이상 수동으로 시작될 수도 없습니다. 이는 일반적으로 사용되지 않고 사용자에게 혼란을 줄 수 있기 때문에 systemd의 숨겨진 기능입니다. 그러나 구체적인 방법은 다음과 같습니다.
서비스 파일을 심볼릭 링크하면$ ln -s /dev/null /etc/systemd/system/ntpd.service $ systemctl daemon-reload
/dev/null
systemd에 문제의 서비스를 시작하지 않고 실행을 완전히 방지하도록 지시할 수 있습니다. 저장된 유닛 파일은 동일한 이름의 유닛 파일을/etc/systemd/system
덮어씁니다 ./lib/systemd/system
전자의 디렉터리는 관리자 영역이고 후자의 디렉터리는 패키지 관리자 영역입니다. 심볼릭 링크를 설치함으로써/etc/systemd/system/ntpd.service
systemd가 업스트림에 제공된 서비스 파일을 읽지 않도록 하십시오/lib/systemd/system/ntpd.service
.
systemd는 심볼릭 링크된 단위를 인식/dev/null
하고 마스크된 것으로 표시합니다. 이러한 서비스를 수동으로 시작하려고 하면(예: systemctl start를 통해) 오류와 함께 실패합니다.
답변2
존재하지 않는 경우 wanted/rpcbind.service
직접 시작되지 않고 대신 소켓 활성화를 통해 시작될 가능성이 높습니다. 상태 출력 줄 indirect
이 아닌 상태 출력 줄을 보면 최근에 시작되었는지 알 수 있습니다 static
(명령줄에 포함되지 않으므로 장치 이름에 자동으로 추가됨).Loaded
systemctl
.service
$ systemctl status rpcbind
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Active: active (running) since Fri 2017-03-31 15:39:29 WIB; 37min ago
Main PID: 6763 (rpcbind)
CGroup: /system.slice/rpcbind.service
└─6763 /sbin/rpcbind -w
어쨌든 소켓 활성화가 활성화되어 있는지 확인할 수 있습니다.
$ systemctl status rpcbind.socket
● rpcbind.socket - RPCbind Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; disabled; vendor preset: enabled)
Active: active (listening) since Fri 2017-03-31 15:39:29 WIB; 37min ago
Listen: /var/run/rpcbind.sock (Stream)
[::]:111 (Stream)
0.0.0.0:111 (Stream)
(위의 예에서는 장치를 비활성화했지만 rpcbind
요청 시 시작된 기존 리스너를 아직 중지하지 않았습니다.)
다음 명령을 실행하면 둘 다 종료되고 시작되지 않는지 확인해야 합니다.
$ systemctl disable rpcbind.service rpcbind.socket
$ systemctl stop rpcbind.service rpcbind.socket
그러면 상태 확인 결과 다음과 같은 내용이 생성되어야 합니다.
$ systemctl status rpcbind.service rpcbind.socket
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Active: inactive (dead) since Fri 2017-03-31 16:17:05 WIB; 49s ago
Main PID: 6763 (code=exited, status=0/SUCCESS)
[...log messages...]
Mar 31 16:17:05 myhost systemd[1]: Stopped RPC bind service.
● rpcbind.socket - RPCbind Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; disabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2017-03-31 16:17:48 WIB; 6s ago
Listen: /var/run/rpcbind.sock (Stream)
[::]:111 (Stream)
0.0.0.0:111 (Stream)
[...log messages...]
Mar 31 16:17:48 myhost systemd[1]: Closed RPCbind Server Activation Socket.
Mar 31 16:17:48 myhost systemd[1]: Stopping RPCbind Server Activation Socket.
답변3
systemd의 경우 부팅 시 시작되는 서비스를 중지하는 방법은 이 disable
옵션을 사용하는 것이므로 이 경우 이 명령을 사용합니다. systemctl disable rpcbind
아래는 Fedora 20 시스템에서 실행할 때 본 출력의 예입니다.
chris::test::07:08:29-> sudo systemctl disable rpcbind
rm '/etc/systemd/system/multi-user.target.wants/rpcbind.service'
rm '/etc/systemd/system/sockets.target.wants/rpcbind.socket'