svscan에 재시도 횟수 설정이 있습니까?

svscan에 재시도 횟수 설정이 있습니까?

저는 오류가 발생하여 멈출 수 있는 스크립트를 감독하기 위해 svscan을 사용하고 있습니다. 스크립트가 종료되면 svscan은 즉시 스크립트를 다시 시작하지만 즉시 종료됩니다. 그래서 계속 다시 시작됩니다. 재시도 횟수 등 svscan에 대한 설정이나 구성을 찾지 못하는 것 같습니다. 비슷한 거 아시나요?

답변1

원래 Bernstein daemontools에는 이에 대한 메커니즘이 없었습니다. 서비스 디렉터리에는 단 하나의 run프로그램과 고정된 자동 다시 시작 정책이 있습니다. 그러나 daemontools 제품군의 여러 구성원은 이를 개선하고 이러한 상황을 해결하는 데 사용할 수 있는 유연하고 일반적인 메커니즘을 갖추고 있습니다.

이는 귀하의 상황에서 사용할 수 있는 일반적인 메커니즘입니다. 여기서는 nosh 서비스 관리에 대해 좀 더 자세히 설명하겠습니다. 이것이 다른 측면에 어떻게 적용되는지는 매우 분명합니다.

nosh의 자동 재시작 제어

nosh 서비스 관리에서 daemontools-encore는 동일한 확장(Bernstein 원본과 관련하여) 서비스 상태를 사용합니다.중지됨,시작,여기 간다,달리기,실패, 그리고멈추다.

서비스 시작 전과 서비스 상태일 때시작상태에서 nosh 서비스 관리자가 start프로그램을 실행합니다.

서비스가 종료되고 여전히 "시작" 상태에 있을 때 nosh 서비스 관리자는 restart다음과 같이 이 프로그램을 실행합니다.실패다시 변환할지 여부를 결정하는 상태달리기국가 또는멈추다(그러면중지됨) 상태. 프로그램 restart은 서비스별 방식으로 이를 결정하며, 여기서 서비스가 "너무 많이" 다시 시작되었는지 아니면 다른 방식으로 다시 시작할 수 없게 되었는지 여부를 명시적으로 결정합니다.

restart기본 서비스 프로세스가 어떻게 종료되었는지에 대한 정보(정상 종료 여부, 신호에 대한 응답으로 종료 여부, 종료 코드 또는 특정 신호 포함)에 대한 정보를 명령줄 인수로 전달합니다. 서비스 관리자가 다시 전환하기로 선택달리기restart프로그램이 성공 상태로 실행 및 종료되고 다음으로 전환될 수 있는지 여부를 나타냅니다 .멈추다(그러므로중지됨) 달리 명시됩니다.

restartstartPerl 프로그램, 쉘 스크립트, execline 프로그램, 컴파일된 바이너리 등 원하는 것이 무엇이든 될 수 있습니다 . case... esacif... 을 사용하는 쉘 스크립팅의 매우 간단한 연습입니다 fi. nosh-bundles 패키지는 restart사용할 수 있는 쉘 스크립트로 작성된 프로그램의 몇 가지 예를 제공합니다.데비안/우분투에서 사용 가능그리고FreeBSD/PC-BSD/DragonFlyBSD/&c에 적용 가능합니다..

따라서 서비스가 "너무 많이" 다시 시작되었는지 확인하려면 start프로그램에서 카운터를 0으로 초기화하도록 할 수 있습니다(서비스 디렉터리의 파일에 있음). 프로그램은 restart카운터가 Only에 도달한 경우에만 카운터를 증가시킵니다. 성공 상태가 특정 값보다 작을 때 반환됩니다. 물론 더 많은 요소와 기타 요소를 통합하여 결정을 내릴 수도 있습니다.

  • 서비스가 충돌하거나 신호에 의해 중단된 경우 자동 다시 시작을 중지하고 완전히 종료되거나 "깨끗한 종료" 신호(예:)에 의해 완전히 종료된 경우에만 자동으로 다시 시작하기를 원할 수도 있습니다 SIGTERM.
  • 서비스가 손상되어(일부 서비스별 방식으로) 관리자 개입 없이는 제대로 다시 시작할 수 없는 것을 발견한 경우 자동 다시 시작을 중지할 수 있습니다.
  • sleep예를 들어 계산 기간 과 관련된 일종의 속도 제한 메커니즘을 도입할 수 있습니다 .

추가 읽기

답변2

동의하다svscan유연성이 없습니다. 고려할 수 있습니다.monit, 스크립트가 가능합니다.

관련 정보