在ubuntu下的ulimit -t

时间:2009-06-10 21:45:00

标签: linux ubuntu ulimit

我正在运行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上安装了同样的东西,它按预期工作。

是否需要设置一些配置才能使其正常工作?

- tsf

1 个答案:

答案 0 :(得分:17)

正如Tsf所指出的,问题是由于bug in kernel 2.6.28。 我留下原来的答案,因为我认为无论如何它都会有所帮助。

来自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