Проверка здоровья для применения
-
02-10-2019 - |
Вопрос
Я хотел бы знать, какие методы существуют, чтобы проверить здоровье процесса. Учитывая, что в процессе системы 10000 работают, и вы должны убедиться, что в случае, если какой-либо из этих процессов нам нужно сделать процесс.
Решение
Используйте идентификатор процесса (PID) и опрос, является ли процесс еще живым или периодически мертв; И если он умер, то возрождай его.
Однако, если у вас есть 10000 процессов, вы, вероятно, сначала найдут ограничение процесса ОС. Я предлагаю перепроектировать вашу программу, чтобы вам не нужны большие процессы в первую очередь.
Другие советы
Повторные вырезывающие процессы, которые идут вниз, обычно обрабатывают, имея определенные программы Launcher для exec () программы и дождитесь, что Sigchild указывает на дочерний процесс.
Для приложений времени загрузки (серверы и т. Д.) Пользомоны, как выскочка Можете сделать это для вас автоматически.
В то время как другие указывают на то, что приложения уже существуют (что вы действительно должны использовать, если у вас нет понятной причины не) Я выброс случайную идею для пользовательского решения.
Если вы контролируете все N
процессы, затем делают их все иметь одну общую память N
Биты большие (так, 10000 процессов ~ 1 КБ, не плохо). При запуске каждого процесса дайте ему номер, i
, начиная от 0 до н. каждый T
секунд у каждого процесса установится бит i
в общей памяти до 1. процесс мониторинга может проверить, что все N
биты 1 каждый k*T
секунды, сбрасывая их все до 0 в процессе.
Это все еще o (n), которое вы неберете избежать, но примитивы все действительно быстрые и должны масштабироваться до пределы потока OS.
Альтернативное представление о получении i
Было бы просто использовать PID, но затем общая память должна быть больше (вероятно, будет все в порядке, хотя; например, диапазон PID Linux небольшой).
Есть утилита называется монить Что делает то, что вы ищете. Но это для определенных важных процессов в Linux. Все 10000 процессов важны !!!