supervisorctl을 사용하여 특정 프로세스 만 다시 시작하는 방법은 무엇입니까?


107

저는 process1, process2, ..., process8이라는 supervisord를 사용하여 몇 가지 프로세스를 실행하고 있습니다. 프로세스 {1-4}를 다시 시작하려면 supervisorctl로 어떻게해야하나요?

답변:


177

supervisord는 프로세스 그룹을 지원 합니다 . 프로세스를 명명 된 그룹으로 그룹화하고 일괄 적으로 관리 할 수 ​​있습니다.

[unix_http_server]
file=%(here)s/supervisor.sock

[supervisord]
logfile=supervisord.log
pidfile=supervisord.pid

[program:cat1]
command=cat

[program:cat2]
command=cat

[program:cat3]
command=cat

[group:foo]
programs=cat1,cat3

[supervisorctl]
serverurl=unix://%(here)s/supervisor.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

supervisorctl 명령은 그룹 이름으로 호출 할 수 있습니다.

supervisorctl restart foo:

뿐만 아니라 여러 프로세스 이름 :

supervisorctl restart foo:cat1 cat2

47
프로세스 그룹에 명령을 내릴 때 콜론을 추가해야한다는 것을 알아내는 것이 얼마나 사소한 일인지 놀랍습니다. 감사합니다.
mafrosis

4
동의합니다. 나는 supervisorctl restart foo:*무슨 일이 일어나고 있는지 더 명확하게 생각 합니다.
Tom

따라서 OP의 질문에 직접 답하기 위해 특정 프로세스를 직접 다시 시작할 수 없습니다. 그룹 태그가 필요한 그룹 만 다시 시작할 수 있습니까?
세린

@Cerin 내 테스트를 통해 똑같은 결론을 내 렸습니다. 일화로 말하면 모든 프로세스를 포함하는 .conf 파일의 끝에 그룹이 표시되는 경향이 있습니다. 반복 된 관찰로서 이것은 의미가 없습니다. 이제 완전히 의미가 있습니다. :)
AlanSE

당신은 내 하루를 만들었습니다 :)
sumit aug

3

supervisorctl명령 줄에서 여러 프로세스를 허용 하므로 셸 중괄호 확장 (예 : Bash)을 활용하여 여러 프로세스를 제어 할 수 있습니다.

supervisorctl restart process{1..4}

의해 확장 됩니다

supervisorctl restart process1 process2 process3 process4

당신이 그것을 명시 적으로 입력 한 것처럼.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.