유닉스 프로세스를 감독하기위한 Daemontools (djbtools)의 대안?


26

내가 사용했던 데몬 툴즈를 내 서버에서 유닉스 서비스를 감독하는 간단하고 신뢰할 수있는 방법을 제공합니다. 잘 작동하지만 다른 사고 방식 ( DJB Way )이 필요하며 일반적인 불만 사항은 다음과 같습니다.

  • TAI64N 기반 타임 스탬프
  • /etc/init.d (또는 (/usr/local)/etc/rc.d)에 스크립트를 저장하지 않습니다
  • apachectl과 같은 스크립트에서 항상 작동하지는 않습니다. 일부 스크립트는 다시 작성해야합니다.

비슷한 "감독자 / 감독"데몬이 약 2 년 전에 작업에 있었지만 일부는 여전히 가장자리에서 약간 거칠 었다는 것을 기억합니다.

데몬 도구에서 다른 것으로 바꾸었다면 무엇을 선택하고 잘 작동 했습니까? RedHat 또는 Ubuntu에는 기본적으로 프로세스 관리자 유틸리티가 제공됩니까?

답변:


16

Hrm, Ubuntu를 사용하는 경우 새로운 init 프로세스 인 upstart 에는 프로세스 감독 수준이 포함됩니다. 표준 서비스 시작 및 중지, la SysV init 스크립트에 사용할 수 있으며 실행중인 응용 프로그램을 모니터링하고 응용 프로그램이 죽으면 다시 생성 할 수도 있습니다.

필요에 따라 inittab을 통해 빈약 한 프로세스 재시작을 구현할 수도 있습니다.

주로 프로세스를 주시하고 항상 실행 중인지 확인한 다음 그렇지 않은 경우 다시 시작하려는 경우, restarted 와 함께 큰 행운을 얻었습니다 . 불행히도, 내가 아는 유일한 소스는 데비안 패키지입니다. 그러나 매우 작고 간단한 응용 프로그램이며 기본적으로 make 파일이있는 단일 .c 및 .h 파일입니다. Red Hat의 데비안 소스 타르볼에서 컴파일하는 것은 쉽지 않습니다 (이전 작업에서 RPM을 만들었습니다).

내가 들었지만 사용하지 않은 마지막 옵션은 Supervisor 입니다. 그것은 유망한 도구처럼 보이지만 다시 시작했지만 과거에는 내가 필요로하는 것에 대해 충분히 효과가 있었지만 아직은 그 도구를 가지고 놀지 않았습니다.


12

런아웃 +1 기존의 daemontools 인수 및 옵션과 호환되는 daemontools보다 많은 기능과 유연성. 꽤 깔끔한.

그러나 언급 한 바와 같이 많은 도구에는 자체 제어 바이너리, apache2ctl, ejabberdctl, poundctl, collectd 등이 포함되어 있습니다. 해킹이 있지만 때로는 가장 깨끗하지 않은 경우 제공된 도구를 사용하는 것이 더 좋습니다. 가능한 구현. 나는 보통 타협을하고 대부분의 서비스는 runit의 감독하에 운영된다. 그리고 다른 사람들은 사소한 방법으로 실행할 수 있습니다.


1
+1 runsvfrom 명령이 runit사용자 정의 제어 를 지원하므로 데몬의 기본 제어 바이너리로 재시작을 구현할 수 있습니다.
순례자

4

음, runit이 있습니다. daemontools와의 차이점과 유사점이 무엇인지 말할 수는 없지만 Berstein-esque 웹 사이트에서 판단 할 때 명확한 Bernstein 영향이 있다고 말할 것입니다.


2
내 투표는 SysVInit 배열에 드롭하고 /etc/init.d/ <scriptname>을 상당히 투명하게 처리 할 수 ​​있다는 점에서 runit에 대한 투표입니다.
Avery Payne


4

이미 언급 한 daemonize및 의 대안으로 libslack 패키지 daemontools데몬 명령이 있습니다.

daemon 꽤 구성 가능하며 자동 재시작, 로깅 또는 pidfile 처리와 같은 모든 지루한 데몬을 관리합니다.



3

C로 작성되었으며 다양한 (Unix) 플랫폼에서 사용 가능한 libslack의 데몬 도구 도 있습니다.

그것은 꽤 구성 가능하며 자동 재시작, 로깅 또는 pidfile 처리와 같은 모든 지루한 데몬을 처리합니다.


2

Ubuntu에는 Upstart 가 포함되어 있습니다. 이에 대해 잘 모르지만 "감독자"기능이 있다는 것을 알고 있습니다. 애플의 론칭 은 또 다른 옵션이다 (위키 백과 기사에는 Upstart & RunIt을 포함하여 다른 것들도 포함 된 "참조"섹션도있다).

그들 모두는 자신의 장점과 자신의 특별한 브랜드 übersuck을 가지고 있습니다. 누군가가 "프로세스 감독자"/ "워치 독"프로그램에 대해 질문 할 때마다 항상 같은 질문을합니다. 왜 하나가 필요합니까?


-2

이 길로 내려가는 모든 사람이 막 다른 골목을 깨달았 기 때문에 이에 대한 인기 / 커뮤니티 합의 도구는 없습니다. 장기 모니터링 프로세스가 너무 자주 실패하여 간단한 모니터링으로 충분하지 않은 경우 프로세스 사용을 중지하고 이벤트 중심의 코드로 코드를 이동하십시오.

편집 : Chris가 아래에서 지적한 것처럼 때로는 완전히 모서리에 있습니다.이 경우 프로세스 / pid 파일을 찾고 * 누락 된 경우 시작 / 다시 시작을 실행하고 결과를 담당자에게 전자 메일로 출력하는 * / 1 cron 작업 개발자 / 제품 관리자는 대체 위치입니다.


3
말보다 쉬웠다. ;-) 때로는 불안정하거나 크 래피 상태에 관계없이 강제로 실행되는 응용 프로그램이 있으며 응용 프로그램을 계속 실행하면 오전 3시 전화 통화를 줄이는 데 도움이됩니다. 어쨌든 이상적이지는 않지만 때로는 얻는 것만 큼 좋습니다.
Christopher Cashell

1
이 답변은 프로세서 그룹의 두 가지 기능, 즉 프로세스 그룹을 단일 단위로 관리하는 기능과 종속성을 관리하는 기능을 놓칩니다. 예를 들어, 웹 사이트에는 웹 서버, 데이터베이스 서버 및 외부 프로세스로 실행되는 여러 웹 응용 프로그램이 포함될 수 있습니다. 이러한 프로세스에는 종속성이있을 수 있습니다. 예를 들어 웹 응용 프로그램보다 먼저 데이터베이스를 가동해야합니다. 적절한 프로세스 관리자는 단일 명령으로이 프로세스 그룹을 시작 및 중지 할 수 있도록하며 올바른 순서로 시작되도록합니다.
Larsks

1
이상적인 세상에서는 모든 것이 완벽하게 작동합니다. 불행히도 이것은 이상적인 세상이 아닙니다.
Matt

문제가 너무 자주 실패하지 않습니다. 문제는 일주일에 한 번 실패하고 즉시 다시 시작되지 않습니다 . 이것은 실제 답변이 아닙니다.
dan3

@ChristopherCashell이 ​​올바른 길을 가고 있습니다. 앱 내부 의 감독 은 일반적으로 과도하게 엔지니어링되며 UNIX 철학이 아닙니다. 소프트웨어는 모든 충돌을 해결하기 위해 사전에 아무리 많은 노력을 기울이더라도 항상 불완전한 것으로 가정 할 수 있습니다. 감독은 별개의 외부 계층 인 보험 정책입니다. 현실이 sh % t 발생하기 때문에 "충돌하지 않아야한다"고해도 생산 서비스를 계속 유지하는 것이 좋습니다. 오히려 서비스를 다시 시작하고 예외를 기록하고 아침에 수정하십시오. (서비스 플 래핑도 고려해야합니다.)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.