2009-06-10 7 views
7

Je cours sous Linux Ubuntu (2.6.28-11-générique n ° 42-Ubuntu SMP ven 17 avr 01:57:59 UTC 2009 i686 GNU/Linux) et il semble que la commande "ulimit - t "ne fonctionne pas correctement. J'ai couru:ulimit -t sous ubuntu

ulimit -t 1; myprogram

où 'myprogram' est une boucle sans fin. Je m'attendais à ce que le programme soit interrompu après 1 seconde, mais ça ne s'est pas arrêté. J'ai essayé la même chose sur une installation Linux Fedora et cela a fonctionné comme prévu.

Y a-t-il une configuration qui doit être configurée pour fonctionner correctement?

- FSP

+0

Je ne pense pas qu'il appartient à serverfault. Qu'est-ce qui te fait penser ainsi? –

+0

Oui peut-être que vous avez raison je viens de réagir si rapidement –

Répondre

16

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 
+1

Non, je n'ai pas de sommeil dans mon programme. Notez que cela fonctionne comme prévu sous Fedora, de sorte que cela ressemble à un problème de configuration sur mon Ubuntu. Je – Tsf

+1

posté la même question sous un autre sujet et il m'a répondu en me dirigeant vers: https://bugs.launchpad.net/ubuntu/jaunty/%2Bsource/linux/%2Bbug/361508 Cela explique le problème ! – Tsf

+0

Merci, j'ai ajouté votre indice en haut de ma réponse. Je pense que c'est mieux si les gens voient d'abord le bogue du noyau. –