"systemctl 비활성화"를 사용하지 않고 서비스를 비활성화하는 방법

"systemctl 비활성화"를 사용하지 않고 서비스를 비활성화하는 방법

다른 서비스가 실패할 때만 ()을 실행하고 싶지만 부팅 시 [Unit] OnFailure=foo해당 서비스()가 자동으로 시작되는 것을 원하지 않는 서비스가 있습니다 . foo한 가지 옵션이 실행 중인데 systemctl disable foo다른 방법을 찾고 있습니다.

systemctl disable foo배경: OS 이미지를 생성 중인데 컴퓨터를 시작하고 명령( )을 실행한 다음 이미지를 최종 선언하기 전에 종료하고 싶지 않습니다 .

답변1

systemctl enable/etc/systemd/system/(시스템 데몬용) 심볼릭 링크를 조작하여 작동합니다. 서비스를 사용 하면 해당 섹션의 행을 enable확인 하고 해당 디렉토리에 심볼릭 링크를 추가합니다.WantedBy[Install].wants

systemctl disable그 반대가 사실입니다.

이러한 심볼릭 링크를 직접 삭제할 수 있습니다. 수동으로 삭제하는 것은 를 사용하는 것과 완전히 동일합니다 systemctl disable.

답변2

모든 서비스는 기본적으로 "비활성화"되어 있으며 "활성화"는 선택 사항입니다.

사용자 정의 서비스인 경우 foo.service지시어 등을 통해 명시적으로 가져오지 않는 한 시작되지 않으며 OnFailure=어떤 것도 "비활성화"해서는 안 됩니다.

답변3

systemctl start ServiceName.service및를 각각 사용하여 systemctl stop Service.Name.service서비스를 시작하고 중지 할 수 있습니다 . systemctl enable ...및 와 달리 시작 systemctl disable ...및 중지 명령은 현재 세션 동안만 지속되므로 컴퓨터를 다시 시작해도 변경 사항이 저장되지 않습니다.

답변4

차단 및 차단 해제 옵션도 있지만 이는 제가 아닌 경험과 지식이 더 많은 사람이 설명해야 합니다.

sudo systemctl 마스크마스크 서비스
sudo systemctl 차단 해제서비스 차단 해제

이것이 맞기를 바랍니다. 그러나 완성도를 위해 이러한 내용이 이 대화에 포함되어야 합니다.

마스킹은 전송을 사용하는데 /dev/null이는 꽤 좋습니다.

내 기억이 정확하다면 동일한 세션에서 서비스를 중지, 비활성화 및 차단할 수 있습니다.

관련 정보