시스템 관리 서비스의 재시작을 제어하나요?

시스템 관리 서비스의 재시작을 제어하나요?

시스템 관리 서비스의 재시작을 제어하나요? 실패하면 기본적으로 다시 시작하고 싶지만 특정 조건이 발생하면 다시 시작하지 않는 서비스가 있습니다. Restart=ab-normal 또는 Restart=always를 사용하면 작동하지만 특정 조건이 발생하면 다시 시작을 중지하고 싶습니다. 서비스와 관련된 해당 하드웨어에 장애가 발생하지 않는 한 서비스 전체 사용은 항상 다시 시작되어야 합니다. 안타깝게도 Restart=ab-normal 또는 Restart=always에는 지능이 없는 것 같나요? 특정 종료 코드(예: 255)를 반환하는 코드 논리를 작성하더라도 Restart= 매개 변수는 이 클래스를 무시하고 코드를 통해 내 코드에서 이를 제어할 수 있는 방법을 찾을 수 없는 것 같습니까? 종료 코드 = 255가 아닌 이상 재시작 = 항상이라고 생각하거나 필요하다고 생각합니까? 이 개념을 구현할 수 있는 방법이 있나요?

답변1

systemd이 서비스에는차단 종료 상태 다시 시작옵션:

.config 를 사용하여 구성된 다시 시작 설정에 관계없이 기본 서비스 프로세스가 반환될 때 자동 서비스 다시 시작을 방지하는 종료 상태 정의 목록을 가져옵니다 Restart=. 종료 상태 정의는 공백으로 구분된 숫자 종료 코드 또는 종료 신호 이름일 수 있습니다. 기본값은 빈 목록이므로 기본적으로 구성된 다시 시작 논리에서 종료 상태가 제외되지 않습니다.

따라서 특정 종료 코드(예: 질문의 255)를 반환하도록 서비스를 수정할 수 있는 경우 다음을 설정할 수 있습니다.

RestartPreventExitStatus=255

관련 정보