Je devine que le problème que vous voulez résoudre est que vous avez un processus en cours d'exécution sur votre boîte qui parfois se comporte mal, et se repose toujours un noyau chevillage.
La première chose que vous voulez faire est d'essayer de réparer le programme qui devient fou. C'est de loin la meilleure solution. Je vais supposer que ce n'est pas possible, ou vous avez besoin d'un kluge rapide pour faire fonctionner votre boîte jusqu'à ce qu'elle soit réparée.
Vous voulez, au minimum, limiter votre script pour ne frapper que le seul programme qui vous préoccupe. Il serait préférable que les autorisations limitent votre script comme ceci (par exemple, votre script s'exécute en tant qu'utilisateur X, la seule autre chose qui s'exécute en tant que X est le programme).
Encore mieux serait d'utiliser quelque chose comme ulimit -t
pour limiter la quantité totale de temps CPU que le programme peut utiliser. De même, s'il consomme toute la mémoire, vérifiez ulimit -v
. Le noyau applique ces limites; voir la bash
page de manuel (c'est un shell intégré) et la setrlimit(2)
page de manuel pour plus de détails.
Si le problème n'est pas un processus en cours d'exécution, mais plutôt un trop grand nombre de processus en cours d'exécution, alors implémentez une forme de verrouillage pour empêcher plus de X de s'exécuter (ou — cela devrait devenir familier— ulimit -u
). Vous pouvez également envisager de modifier la priorité du planificateur de ces processus (à l'aide de nice
ou renice
), ou, encore plus radicalement, à l'aide sched_setscheduler
de la modification de la stratégie en SCHED_IDLE
.
Si vous avez besoin d'encore plus de contrôle, jetez un oeil à des groupes de contrôle (cgroups). En fonction du noyau que vous exécutez, vous pouvez réellement limiter la quantité de temps CPU, de mémoire, d'E / S, etc. qu'un ensemble de processus consomme ensemble. Les groupes de contrôle sont assez flexibles; ils peuvent probablement faire tout ce que vous essayez de faire, sans kluges fragiles. Le Wiki Arch Linux a une introduction aux groupes de discussion qui vaut la peine d'être lue, tout comme la série de groupes de Neil Brown au LWN.
while [ 1 ]
me fait me demander combien de CPU ce script seul va consommer. De plus, 3 appels àkill -9
un script s'exécutant en permanence? Cela me donne des frissons ...