systemctl은 활성화되었지만 비활성화된 모든 서비스를 시작합니다.

systemctl은 활성화되었지만 비활성화된 모든 서비스를 시작합니다.

코드형 구성 도구를 개발 중이며 이를 위한 시스템 공급자를 만들고 싶습니다.

NetworkManager.service이제 사용자가 구성에서 활성화 및 비활성화 하려는 항목을 설명한다고 가정해 보겠습니다 cups.service.

systemctl enable NetworkManager.service및 를 각각 사용하여 해당 단위 파일을 링크 해제할 수 있지만 systemctl disable cups.service이제 중지해야 하는 서비스를 중지하고 시작해야 하는 서비스를 시작해야 합니다.

나는 나를 위해 이 작업을 수행하는 명령이 있었으면 좋겠다. "실행 중이지만 중지해야 하는 모든 것을 중지하고 중지되었지만 실행해야 하는 모든 것을 시작합니다." systemctl daemon-reload불행히도 이것은 내가 원하는 것이 아닙니다.

그러한 기능이 내장되어 있나요? systemctl아니면 각 서비스를 개별적으로 운영해야 하나요?

폴리스티렌이것은 실제로 별도의 질문이어야합니다.하지만내 사용자가 PID 1이 시스템화되지 않은 chrooted/containerized 환경에서 내 프로그램을 실행하는 몇 가지 사용 사례가 있을 것이라고 생각합니다. 장치 작업을 호출하려고 하면 systemctl상태 1과 함께 종료되고 메시지가 표시됩니다 System has not been booted with systemd as init system (PID 1). Can't operate.. 이 상황을 미리 확인할 수 있는 방법이 있습니까? 아니면 오류를 잡아내는 것이 제가 할 수 있는 최선입니까?

답변1

원래 질문에 대답하려면 다음을 수행하십시오.

daemon-reloadsystemd구성을 다시 읽도록 지시합니다 .

알아채다할 수 있게 하다서비스는 서비스가 다른 단위의 종속성으로 시작됨을 의미합니다. 기본 대상이 다중 사용자라고 가정하면 systemctl isolate multi-user.target모든 종속 활성화 장치가 시작되어야 한다는 것을 이해하면 이것을 시도해 볼 수 있습니다.다중 사용자다른 모든 것을 차단합니다.

그래도 작동하지 않으면 출력을 사용하는 간단한 쉘 스크립트를 사용 systemctl list-units -t service하면 됩니다. 편집: 활성화/비활성화는 보고되지 않습니다. 대신 list-units사용할 수 있습니다 .systemctl status -t service \*

마지막으로, 아마도 당신은 이것을 정말로 원할 것입니다:

systemctl enable --now SERVICE
systemctl disable --now SERVICE

--now서비스를 활성화/비활성화하는 동안 서비스를 시작/중지합니다. 물론 이 작업은 systemctl start SERVICE개별적 으로 수행할 수도 있습니다 systemctl stop SERVICE.

관련 정보