由於Tsf指出,這個問題是由於bug in kernel 2.6.28。 我留下了我的原始答案,因爲我認爲它可能會有所幫助。
從手冊頁的ulimit
-t The maximum amount of cpu time
in seconds.
在什麼方面的ulimit重要的是隻有CPU時間。 嘗試啓動你的程序是這樣的:
time myprogram
會告訴你的CPU多少時間真的使用。
我的懷疑是你的無限循環包含sleep()
並且睡眠時間不會影響進程的CPU時間。
這被一秒後被殺:
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do a=1; done
Killed
這似乎永遠運行(當然不是):
[email protected]:~$ bash
[email protected]:~$ ulimit -t 1; for ((i=1; 1; i++)); do sleep 1; done
測量CPU時間是這樣的...
[email protected]:~$ time for ((i=1; i<5; i++)); do sleep 1; done
... 5秒後...
real 0m4.008s
user 0m0.000s
sys 0m0.012s
...僅使用12 ms CPU時間。
我試了一下在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
我不認爲這屬於對serverfault。是什麼讓你這麼想的? – 2009-06-10 21:57:08
是的,也許你是對的我只是反應如此迅速 – 2009-06-10 22:33:17