2009-06-10 20 views
7

Sto usando Ubuntu Linux (2.6.28-11-generiC# 42-Ubuntu SMP ven apr 17 01:57:59 UTC 2009 i686 GNU/Linux) e sembra che il comando "ulimit - t "non funziona correttamente. Ho eseguito:ulimit -t sotto ubuntu

ulimit -t 1; mioprogramma

dove "myprogram" è un loop infinito. Mi aspettavo che il programma si interrompesse dopo 1 secondo, ma non si è fermato. Ho provato la stessa cosa su un'installazione Linux di Fedora e ha funzionato come previsto.

C'è qualche configurazione che deve essere impostata affinché funzioni correttamente?

- TSF

+0

Io non credo che appartiene a serverfault. Cosa te lo fa pensare? –

+0

Sì forse hai ragione, ho appena reagito così in fretta –

risposta

16

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

No, non ho dormito nel mio programma. Si noti che funziona come previsto in Fedora, in modo che sembri un problema di configurazione sul mio Ubuntu. – Tsf

+1

ho postato la stessa domanda in un argomento diverso ed è stato risposto da me indirizzando a: https://bugs.launchpad.net/ubuntu/jaunty/%2Bsource/linux/%2Bbug/361508 Questo spiega il problema ! – Tsf

+0

Grazie, ho aggiunto il tuo suggerimento in cima alla mia risposta. Penso che sia meglio se la gente vede prima il bug del kernel. –

Problemi correlati