Comme Tsf a souligné, le problème est dû à un bug in kernel 2.6.28. Je laisse ma réponse originale, parce que je pense que cela pourrait être utile de toute façon.
De l'ulimit manpage
-t The maximum amount of cpu time
in seconds.
Ce qui compte en ce qui concerne ulimit est seulement temps CPU. Essayez de démarrer votre programme comme celui-ci:
time myprogram
qui va vous montrer combien de temps CPU utilise vraiment.
Mon soupçon est que votre boucle sans fin contient sleep()
et le temps de sommeil ne contribue pas au temps CPU du processus.
C'est tué après une seconde:
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do a=1; done
Killed
Cela semble fonctionner pour toujours (mais bien sûr, ne fonctionne pas):
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do sleep 1; done
mesure comme ce temps CPU ...
[email protected]:~$ time for ((i=1; i<5; i++)); do sleep 1; done
... et 5 secondes plus tard ...
real 0m4.008s
user 0m0.000s
sys 0m0.012s
... seulement 12 ms Temps CPU utilisé.
Je l'ai essayé sur Jaunty Jackalope ubuntu (9,04)
Linux host 2.6.28-11-generiC#42-Ubuntu SMP
Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
Je ne pense pas qu'il appartient à serverfault. Qu'est-ce qui te fait penser ainsi? –
Oui peut-être que vous avez raison je viens de réagir si rapidement –