100개의 프로그램 인스턴스를 계속 실행하세요.

100개의 프로그램 인스턴스를 계속 실행하세요.

저는 현재 Supervisord를 사용하여 동시에 실행되는 100개의 스크립트 인스턴스를 유지하고 있습니다. 하나가 죽으면 새로운 것이 시작됩니다.

그러나 더 많은 수(300개 이상의 프로세스)를 유지 관리하는 것은 어려운 것 같아 대안을 찾고 있습니다. Monit은 단일 스크립트를 모니터링하고 동일한 스크립트의 100개 인스턴스를 쉽게 모니터링할 수 없다는 점에서 내가 원하는 것을 수행하지 못하는 것 같습니다.

사용할 수 있는 다양한 도구에 대한 제안이 있나요?

답변1

당신은 그것을 사용할 수 있습니다 :

ps h --ppid $$ | wc -l

Bash 스크립트에서 하위 프로세스 수를 가져옵니다(여기에는 ps가 포함된다는 점을 기억하세요). 따라서 1000개의 프로세스를 원하는 경우 1001이 반환되는지 확인하세요. 그렇지 않은 경우 다음 명령을 사용하여 시작하십시오.

cmd &

현재 스크립트의 하위 항목으로 실행됩니다(따라서 개수에 포함됩니다). 그런 다음 잠시 잠을 자고 루프에서 영원히 다시 확인할 수 있습니다. 한 가지 명심해야 할 점은 다른 프로세스를 생성하려면 ps원하는 프로세스를 필터링하도록 명령을 수정해야 한다는 것입니다.

첫 번째 명령은 퍼즐의 핵심 부분이며 스크립트를 작성하기 전에 추가 내용이 있어야 합니다.

답변2

pgrep|wc -l간단한 쉘 스크립트에서 비슷한 것을 사용 하겠습니다 . 각 검사 사이에 1초 정도 기다리십시오(원하는 경우 Linux에서는 더 짧게 기다릴 수 있습니다) sleep.

답변3

스크립트가 종료되고 방금 셸로 돌아가는 경우 각 인스턴스에 대해 래퍼 스크립트를 사용할 수 있습니다.

while [ 1 == 1 ] ; do /path/to/script ; done

또는 스크립트를 분기하는 래퍼를 작성하고 이를 사용하여 wait/waitpid죽은 프로세스를 포착합니다.

관련 정보