2011-10-26 3 views
6

supervisord이 내 Ubuntu 10.04에 설치되어 있고 Java 프로세스가 계속 실행되며 어떻게 든 죽거나 충돌 할 때 프로세스를 치료 (다시로드)해야합니다. 에Supervisord가 죽은 프로세스를 시작하지 않습니다

htop 내가 SIGKILL이, SIGTERM는, SIGHUP, 그 Java 프로세스에 SIGSEGV 신호와 /etc/logs/supervisord.log 파일을보고, 그것이 말하는 보냅니다.

08:09:46,182 INFO success: myprogram entered RUNNING state,[...] 
08:38:10,043 INFO exited: myprogram (exit status 0; expected) 

08:38에서 나는 SIGSEGV로 프로세스를 종료합니다. 어떻게 코드 0에서 빠져 나와서 supervisord을 다시 시작하지 않는가?

내 모든 supervisord.conf 다음과 같이 특정 프로그램이 있습니다 : 내가 supervisord을 시작할 때

[program:play-9000] 
command=play run /var/www/myprogram/ --%%prod 
stderr_logfile = /var/log/supervisord/myprogram-stderr.log 
stdout_logfile = /var/log/supervisord/myprogram-stdout.log 

프로세스가 정말 잘 작동하지만 치유되지 않습니다.

그런데 어떻게하면 시스템 전체가 재부팅 될 때 자동으로 서비스되도록 슈퍼 바이저를 서비스로 시작하는 방법에 대한 아이디어가 있습니까?

답변

11

autorestart=true으로 설정해보십시오. 기본적으로 autorestart는 "예기치 않은"것으로 설정되어 있습니다. 예기치 않은 종료 코드가있는 프로세스 만 다시 시작합니다. 기본적으로 종료 코드 0이 필요합니다.

http://supervisord.org/configuration.html#program-x-section-settings

당신은 상사가 다시 부팅 시작 있는지 확인하기 위해 chkconfig를 프로그램을 사용할 수 있습니다.

$ sudo apt-get install chkconfig 
$ chkconfig -l supervisor 
supervisor    0:off 1:off 2:on 3:on 4:on 5:on 6:off 

설치했을 때 런레벨 2-5가 기본적으로 활성화되어있는 것을 볼 수 있습니다.

$ man 7 runlevel 

자세한 내용은 실행 수준을 참조하십시오.

+0

굉장합니다! 이'autorestart' 설정을 찾고있었습니다. 기본적으로 그것이'true'라고 기대하고 있었고 문서에서 길을 잃었습니다. BTW 나는'chkconfig'는 프로세스가 서비스가되어야한다고 생각하지만,'supervisord'는 서비스가 아니므로'chkconfig -l' 명령은 나에게 작용하지 않고'supervisor : unrecognized service'라고합니다. 그걸 어떻게 생각하니? –

+1

어떻게 수퍼바이저를 설치 했습니까? apt-get을 사용한다면 적어도 Ubuntu 10.04에서는 서비스로 설치됩니다. –

+0

그것은 10.04에 있었고'easy_install'을 사용하여 설치했다고 생각합니다. 그것을 알아 줘서 고마워. –

관련 문제