Come Tsf sottolineato, il problema è dovuto ad un bug in kernel 2.6.28. Lascio la mia risposta originale, perché penso che potrebbe essere comunque utile.
Dalla pagina man ulimit
-t The maximum amount of cpu time
in seconds.
Ciò che conta rispetto al ulimit è volta solo CPU. tenta di avviare il programma come questo:
time myprogram
che vi mostrerà quanto tempo di CPU utilizza davvero.
Il mio sospetto è che il ciclo infinito contenga sleep()
e che il tempo di sospensione non contribuisca al tempo di CPU del processo.
Questo viene ucciso dopo un secondo:
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do a=1; done
Killed
Questo sembra correre per sempre (ma naturalmente non lo fa):
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do sleep 1; done
Misura tempo di CPU come questo ...
[email protected]:~$ time for ((i=1; i<5; i++)); do sleep 1; done
... e 5 secondi più tardi ...
real 0m4.008s
user 0m0.000s
sys 0m0.012s
... solo 12 ms Tempo CPU utilizzato.
ho provato su 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
fonte
2009-06-10 21:58:47
Io non credo che appartiene a serverfault. Cosa te lo fa pensare? –
Sì forse hai ragione, ho appena reagito così in fretta –