ssh를 제외한 모든 서비스 비활성화


31

최신 (시스템 기반) Linux 배포판에서 ssh를 제외한 모든 서비스를 비활성화하려면 어떻게해야합니까?

유지 관리 모드 를 구현해야 합니다 .

이러한 서비스는 모두 다운되어야합니다.

  • postgres
  • 접미사
  • 아파치
  • 크론
  • 비둘기장

그러나 유지 관리 모드에서 작업을 수행하는 데 사용되므로 ssh를 종료해서는 안됩니다.

물론 비활성화하려는 서비스 목록을 반복하는 쉘 스크립트를 작성할 수 있습니다. 그러나 이것은 이미 존재하지만 지금까지 모르는 것을 재발 명하는 것처럼 느낍니다.


1
어떤 유형의 작업입니까? 왜 이것이 필요한가요?
ewwhite

@ user430214 질문을 업데이트했습니다. 추가했습니다 : 물론 비활성화하려는 서비스 목록을 반복하는 쉘 스크립트를 작성할 수 있습니다. 그러나 이것은 이미 존재하지만 지금까지 모르는 것을 재발 명하는 것처럼 느낍니다.
guettli

답변:


55

이 같은 많은 소리 실행 레벨 로 대체, 목표 Systemd에 있습니다. 따라서 서비스 목록을 시작 및 중지하는 스크립트를 작성하는 대신 maintenance.targetSSH와 같은 필요한 서비스 만 포함 하는 새 스크립트를 작성할 수 있습니다 . 물론 SSH는 네트워킹 없이는 유용하지 않으므로이 예 emergency-net.target에서는 SSH를 포함하도록 단순 이 수정되었습니다.

[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes

그런 다음 다음을 사용하여 유지 관리 모드로 들어갈 수 있습니다

# systemctl isolate maintenance.target

그리고 다시

# systemctl isolate multi-user.target

1
이 답변에 감사드립니다. 더러운 쉘 스크립트를 작성하는 것 외에는 좋은 대답이 없다고 생각하더라도 묻는 것이 유용하다는 것을 보여줍니다. Emergency-net.target은 간단하고 우아한 솔루션입니다-훌륭한 :-)
guettli

모든 종속성을 처리하므로 새 서비스를 설치할 때마다 스크립트를 업데이트 할 필요가 없습니다.
Esa Jokinen

3

먼저 서비스를 나열하고 해당 시스템 이름을 검색하십시오.

그런 다음 목록을 작성하고 각 목록 구성원을 중지하여 유지 보수를 시작하고 유지 보수 후에 각 구성원을 시작하십시오.


5
왜 사용하지 systemctl isolate않습니까?
Chris Down
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.