ulimit -t在Ubuntu下

我运行的是Ubuntu Linux(2.6.28-11-generic#42 -Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU / Linux),看起来命令“ulimit -t”无法正常工作。 我跑了:

ulimit -t 1; myprogram

“myprogram”是一个无限循环。 我希望程序在1秒后中断,但并没有停止。 我在Linux Fedora安装上尝试了同样的事情,它按预期工作。

是否需要设置一些configuration才能正常工作?

– tsf

Solutions Collecting From Web of "ulimit -t在Ubuntu下"

正如Tsf所指出的那样,这个问题是由于内核2.6.28中的一个bug造成的。 我留下我原来的答案,因为我认为这可能会有所帮助。

从ulimit手册页

-t The maximum amount of cpu time in seconds.

有关ulimit的只是CPU时间 。 尝试像这样开始你的程序:

 time myprogram 

这将显示它真正使用多少CPU时间。

我的怀疑是你的无限循环包含sleep()和睡眠时间不会影响进程的CPU时间。

这会在一秒钟后死亡

 me@host:~$ bash me@host:~$ ulimit -t 1; for (( i=1; 1; i++ )); do a=1; done Killed 

这似乎永远运行(但当然不):

 me@host:~$ bash me@host:~$ ulimit -t 1; for (( i=1; 1; i++ )); do sleep 1; done 

测量像这样的CPU时间…

 me@host:~$ 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