В настоящее время я использую supervisord для поддержки 100 экземпляров скрипта, запускаемого одновременно. Если кто-то умирает, он начинает новый.
Однако, кажется, изо всех сил пытается поддерживать большее количество (> 300 процессов), и я ищу замену. Кажется, что Monit не выполняет то, что я хочу, поскольку он отслеживает отдельные сценарии и не может легко просматривать 100 экземпляров одного и того же сценария.
Любые предложения по другому инструменту, который я мог бы использовать?
process
monitoring
чжон
источник
источник
Ответы:
Ты можешь использовать:
чтобы получить число дочерних процессов из скрипта bash (помните, что это включает в себя ps). Поэтому, если вы хотите иметь 1000 процессов, вы проверяете, возвращает ли это 1001. Если нет, запустите их:
так что они запускаются как дочерние элементы текущего сценария (и, следовательно, включаются в счетчик). Затем вы можете немного поспать, а затем снова проверить в цикле навсегда. Следует помнить одну вещь: если вы запускаете другие процессы, вам нужно изменить
ps
команду, чтобы отфильтровать нужные вам процессы.Эта первая команда является основной частью головоломки, она должна быть немного больше, пока у вас не будет своего сценария.
источник
Я хотел бы использовать
pgrep|wc -l
или что-то подобное в простом сценарии оболочки. Подождите одну секунду (или меньше в Linux, если хотите) между каждой проверкой сsleep
.источник
Если ваш скрипт умирает и просто возвращается в оболочку, вы можете использовать скрипт-обертку для каждого экземпляра:
или вы пишете какую-то оболочку, которая разветвляет сценарии и использует их
wait/waitpid
для отлова мертвых процессов.источник