Pregunta

me gustaría saber cuáles son los métodos existen para comprobar el estado de un proceso. Teniendo en cuenta que en un sistema de 10.000 proceso se están ejecutando y hay que asegurarse de que en caso de que cualquiera de estos procesos se cae necesitamos para hacer el proceso UP.

¿Fue útil?

Solución

Usar el ID de proceso (PID) y sondeo de si el proceso está todavía vivo o está muerto periódicamente; y si está muerto, entonces revivirlo.

Sin embargo, si usted tiene 10.000 proceso, es probable que golpear primer límite de proceso del sistema operativo. Sugiero el rediseño de su programa, de modo que no es necesario que tanto los procesos en el primer lugar.

Otros consejos

procesos que descienden por lo general se maneja por tener programas de lanzadores específicas a exec () el programa y espera por una SIGCHILD para indicar que el proceso hijo terminó Re-desove.

Para aplicaciones de arranque de tiempo (servidores, etc.) como demonios advenedizo puede hacer esto de forma automática.

Mientras que otros están señalando que las aplicaciones ya existe (que realmente debería usar a menos que tenga una razón clara de no) voy a tirar a cabo una idea al azar para una solución personalizada.

Si el control de todos los procesos N continuación, hacer que todos tienen bits uno N área de memoria compartida grande (así, 10000 procesos ~ 1 KB, no está mal). Al iniciar cada proceso se dará un número, i, que van desde 0 a N. Cada T segundo tienen cada proceso establecerá i bits en la memoria compartida con el proceso de seguimiento 1. A puede comprobar que todos los bits son 1 cada N k*T segundos, restablecer todos ellos a 0 en el proceso.

Esto sigue siendo O (n), que usted no evitar, pero las primitivas son todos muy rápido y debe escalar bien hasta el límite de hebras del sistema operativo.

Una idea alternativa para la obtención de i sería sólo para usar el PID, pero entonces la memoria compartida tendrá que ser más grande (probablemente todavía va a estar bien, aunque, por ejemplo, el rango de Linux PID es pequeño)

.

hay una utilidad llamada Monit el que hace lo que usted está buscando. Pero es para ciertos procesos importantes en Linux .. 10000 todos los procesos son importantes !!!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top