Eu estou supondo que o problema que você quer resolver é que você tem algum processo em execução em sua caixa que às vezes se comporta mal, e senta-se para sempre atrelar um núcleo.
A primeira coisa que você quer fazer é tentar consertar o programa que fica louco. Essa é de longe a melhor solução. Eu vou assumir que isso não é possível, ou você precisa de um kluge rápido para manter sua caixa funcionando até que seja consertada.
Você, no mínimo, deseja limitar seu script para atingir apenas o programa com o qual se preocupa. Seria melhor se as permissões limitassem seu script assim (por exemplo, seu script é executado como usuário X, a única outra coisa sendo executada como X é o programa).
Melhor ainda seria usar algo como ulimit -t
para limitar a quantidade total de tempo de CPU que o programa pode usar. Da mesma forma, se consumir toda a memória, verifique ulimit -v
. O kernel impõe esses limites; veja a página de bash
manual (é um shell embutido) e a página de setrlimit(2)
manual para obter detalhes.
Se o problema não é um processo que está ficando maluco, mas sim muitos processos em execução, implemente alguma forma de bloqueio para impedir que mais do que o X seja executado (ou - isso deve estar se familiarizando ulimit -u
). Você também pode alterar a prioridade do agendador desses processos (usando nice
ou renice
) ou, ainda mais drástico, sched_setscheduler
para alterar a política SCHED_IDLE
.
Se você precisar de ainda mais controle, dê uma olhada em grupos de controle (cgroups). Dependendo do kernel em execução, você pode realmente limitar a quantidade de tempo da CPU, memória, E / S, etc. que todo um grupo de processos consome juntos. Grupos de controle são bastante flexíveis; eles provavelmente podem fazer o que você está tentando fazer, sem kluges frágeis. O Arch Linux Wiki tem uma introdução aos cgroups que vale a pena ler, assim como a série de cgroups de Neil Brown no LWN.
while [ 1 ]
me faz pensar em quanto CPU esse script sozinho consumirá. Além disso, três chamadaskill -9
em um script em execução constante? Isso me dá arrepios ...