Estoy adivinando el problema que desea resolver es que tiene algún tipo de proceso que se ejecuta en su caja, que a veces se porta mal, y se sienta siempre un núcleo de vinculación.
Lo primero que debes hacer es intentar arreglar el programa que se vuelve loco. Esa es, con mucho, la mejor solución. Voy a suponer que eso no es posible, o necesita un rápido Kluge para mantener su caja funcionando hasta que se solucione.
Usted, como mínimo, desea limitar su secuencia de comandos para que solo llegue al único programa que le preocupa. Sería mejor si los permisos limitaran su script de esta manera (por ejemplo, su script se ejecuta como usuario X, lo único que se ejecuta como X es el programa).
Aún mejor sería usar algo como ulimit -t
limitar la cantidad de tiempo total de CPU que el programa puede usar. Del mismo modo, si consume toda la memoria, verifique ulimit -v
. El núcleo impone estos límites; vea la página de bash
manual (es un shell incorporado) y la página de setrlimit(2)
manual para más detalles.
Si el problema no es un proceso que se está volviendo loco, sino que se están ejecutando demasiados procesos, entonces implemente alguna forma de bloqueo para evitar que se ejecute más de X (o, esto debería estar familiarizándose ulimit -u
). También puede considerar cambiar la prioridad del planificador de esos procesos (usando nice
o renice
), o incluso más drástico, usando sched_setscheduler
para cambiar la política SCHED_IDLE
.
Si necesita aún más control, eche un vistazo a los grupos de control (cgroups). Dependiendo del núcleo que esté ejecutando, en realidad puede limitar la cantidad de tiempo de CPU, memoria, E / S, etc., que consume un grupo completo de procesos. Los grupos de control son bastante flexibles; probablemente puedan hacer lo que sea que intentes hacer, sin ningún tipo de fragilidad. Arch Linux Wiki tiene una introducción a cgroups que vale la pena leer, al igual que la serie cgroups de Neil Brown en LWN.
while [ 1 ]
me hace preguntarme cuánto CPU consumirá este script solo. Además, ¿3 llamadas akill -9
un script que se ejecuta constantemente? Esto me da escalofríos ...