Como Tsf señalado, el problema se debe a una bug in kernel 2.6.28. Dejo mi respuesta original, porque creo que podría ser útil de todos modos.
Desde la página de manual ulimit
-t The maximum amount of cpu time
in seconds.
Lo que cuenta en lo que respecta a ulimit es tiempo de CPU única . Trate de iniciar su programa como este:
time myprogram
que le mostrará la cantidad de tiempo de CPU que realmente utiliza.
Mi sospecha es que su bucle sin fin contiene sleep()
y el tiempo de inactividad no contribuye al tiempo de CPU del proceso.
Esta es asesinado después de un segundo:
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do a=1; done
Killed
Esto parece funcionar para siempre (pero por supuesto no lo hace):
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do sleep 1; done
Medir el tiempo de CPU como esto ...
[email protected]:~$ time for ((i=1; i<5; i++)); do sleep 1; done
... y 5 segundos después ...
real 0m4.008s
user 0m0.000s
sys 0m0.012s
... solo 12 ms de tiempo de CPU utilizado.
Lo he probado en Ubuntu Jaunty Jackalope (9,04)
Linux host 2.6.28-11-generiC#42-Ubuntu SMP
Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
No creo que pertenece en serverfault. ¿Qué te hace pensar eso? –
Sí, tal vez tienes razón, acabo de reaccionar tan rápido –