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


12

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

배경 : OS 이미지를 만들고 있는데 머신을 부팅하고 해당 명령 ( systemctl disable foo)을 실행 한 다음 이미지를 최종 선언하기 전에 종료하고 싶지 않습니다 .

답변:


4

모든 서비스는 기본적으로 "비활성화"되어 있습니다. "활성화"는 옵트 인입니다.

경우 foo.service사용자 정의 서비스입니다, 그것은 명시 적으로 (같은 무언가에 의해 당겨하지 않으면 시작되지 않습니다 OnFailure=당신은 "해제"아무것도 안 지시어)합니다.


foo가 이미 활성화되어 있지 않다면 기본적으로 "이 기능을 무료로 사용할 수 있습니까?"
rogerdpack

26

systemctl enable/etc/systemd/system/(시스템 데몬의) 심볼릭 링크를 조작하여 작동합니다 . 당신은 때 enable서비스, 그것은 본다 WantedBy에 선 [Install]그 섹션 및 풍덩 심볼릭 링크 .wants디렉토리.

systemctl disable 반대입니다.

이러한 심볼릭 링크를 제거하면됩니다. 손으로 직접 수행하는 것은을 사용하는 것과 완전히 같습니다 systemctl disable.


이 서비스는 아직 시스템에 의해 실행되지 않은 서비스 (맞춤형)이므로 추가 심볼릭 링크가 없습니다. 처음 부팅 할 때 생성 될 것 같습니까?
tshepang

3
@Tshepang 수동으로 (또는 물론 스크립트에서) 활성화하지 않으면 활성화 할 수 없습니다
derobert

1
오, 나는 자동으로 활성화 될 것이라고 가정했습니다 (데비안 패키지를 설치하면 기대되는 것입니다). 알아 둘만 한.
tshepang

3
@Tshepang 활성화 패키지를 실행하는 postinst 스크립트입니다. 또는 패키지에 심볼릭 링크를 배송한다고 생각합니다.
derobert

4

서비스를 각각 사용 systemctl start ServiceName.service하고 systemctl stop Service.Name.service시작 및 중지 할 수 있습니다 . systemctl enable ...및과 달리 systemctl disable ...시작 및 중지 명령은 현재 세션에 대해서만 지속되므로 시스템을 재부팅하면 변경 사항이 저장되지 않습니다.

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