저는 오류가 발생하여 멈출 수 있는 스크립트를 감독하기 위해 svscan을 사용하고 있습니다. 스크립트가 종료되면 svscan은 즉시 스크립트를 다시 시작하지만 즉시 종료됩니다. 그래서 계속 다시 시작됩니다. 재시도 횟수 등 svscan에 대한 설정이나 구성을 찾지 못하는 것 같습니다. 비슷한 거 아시나요?
답변1
원래 Bernstein daemontools에는 이에 대한 메커니즘이 없었습니다. 서비스 디렉터리에는 단 하나의 run
프로그램과 고정된 자동 다시 시작 정책이 있습니다. 그러나 daemontools 제품군의 여러 구성원은 이를 개선하고 이러한 상황을 해결하는 데 사용할 수 있는 유연하고 일반적인 메커니즘을 갖추고 있습니다.
- 게릿 펩의 루넷그리고로랑 벨코테의 S6둘 다 프로그램의 메커니즘을 제공합니다
finish
. - Bruce Guenter의 daemontools-encore프로그램의 메커니즘을 제공합니다
notify
. - 웨인 마샬의 범죄
rc.main
하위 명령을 사용하여 프로그램을 호출하는 메커니즘이 있습니다reset
. - 나의 간식 도구 세트프로그램의 메커니즘을 제공합니다
restart
.
이는 귀하의 상황에서 사용할 수 있는 일반적인 메커니즘입니다. 여기서는 nosh 서비스 관리에 대해 좀 더 자세히 설명하겠습니다. 이것이 다른 측면에 어떻게 적용되는지는 매우 분명합니다.
nosh의 자동 재시작 제어
nosh 서비스 관리에서 daemontools-encore는 동일한 확장(Bernstein 원본과 관련하여) 서비스 상태를 사용합니다.중지됨,시작,여기 간다,달리기,실패, 그리고멈추다.
서비스 시작 전과 서비스 상태일 때시작상태에서 nosh 서비스 관리자가 start
프로그램을 실행합니다.
서비스가 종료되고 여전히 "시작" 상태에 있을 때 nosh 서비스 관리자는 restart
다음과 같이 이 프로그램을 실행합니다.실패다시 변환할지 여부를 결정하는 상태달리기국가 또는멈추다(그러면중지됨) 상태. 프로그램 restart
은 서비스별 방식으로 이를 결정하며, 여기서 서비스가 "너무 많이" 다시 시작되었는지 아니면 다른 방식으로 다시 시작할 수 없게 되었는지 여부를 명시적으로 결정합니다.
restart
기본 서비스 프로세스가 어떻게 종료되었는지에 대한 정보(정상 종료 여부, 신호에 대한 응답으로 종료 여부, 종료 코드 또는 특정 신호 포함)에 대한 정보를 명령줄 인수로 전달합니다. 서비스 관리자가 다시 전환하기로 선택달리기restart
프로그램이 성공 상태로 실행 및 종료되고 다음으로 전환될 수 있는지 여부를 나타냅니다 .멈추다(그러므로중지됨) 달리 명시됩니다.
restart
start
Perl 프로그램, 쉘 스크립트, execline 프로그램, 컴파일된 바이너리 등 원하는 것이 무엇이든 될 수 있습니다 . case
... esac
및 if
... 을 사용하는 쉘 스크립팅의 매우 간단한 연습입니다 fi
. nosh-bundles 패키지는 restart
사용할 수 있는 쉘 스크립트로 작성된 프로그램의 몇 가지 예를 제공합니다.데비안/우분투에서 사용 가능그리고FreeBSD/PC-BSD/DragonFlyBSD/&c에 적용 가능합니다..
따라서 서비스가 "너무 많이" 다시 시작되었는지 확인하려면 start
프로그램에서 카운터를 0으로 초기화하도록 할 수 있습니다(서비스 디렉터리의 파일에 있음). 프로그램은 restart
카운터가 Only에 도달한 경우에만 카운터를 증가시킵니다. 성공 상태가 특정 값보다 작을 때 반환됩니다. 물론 더 많은 요소와 기타 요소를 통합하여 결정을 내릴 수도 있습니다.
- 서비스가 충돌하거나 신호에 의해 중단된 경우 자동 다시 시작을 중지하고 완전히 종료되거나 "깨끗한 종료" 신호(예:)에 의해 완전히 종료된 경우에만 자동으로 다시 시작하기를 원할 수도 있습니다
SIGTERM
. - 서비스가 손상되어(일부 서비스별 방식으로) 관리자 개입 없이는 제대로 다시 시작할 수 없는 것을 발견한 경우 자동 다시 시작을 중지할 수 있습니다.
sleep
예를 들어 계산 기간 과 관련된 일종의 속도 제한 메커니즘을 도입할 수 있습니다 .
추가 읽기
- 조나단 데보인 폴라드(2015).데몬 도구 계열. 일반적인 답변.
- 조나단 드 보인 폴라드.
service-manager
. 스낵 가이드.이것스낵 가이드다음과 같이 사용 가능데비안/우분투 패키지그리고FreeBSD/PC-BSD/DragonFlyBSD/&c. 팩,
service-manager
다음 방법을 통해 인터넷 연결 없이 컴퓨터에서 액세스할 수 있습니다.man service-manager
xdg-open /usr/local/share/doc/nosh/service-manager.html
- 브루스 건터.
supervise
. daemontools-encore 매뉴얼. §8. - 게릿 파프.
runsv
. 런북. §8. - 웨인 마샬(2013).
perpetrate
. 죄수의 핸드북. §5. - 로랑 베르코.
s6-supervise
. s6 매뉴얼.