【问题标题】:ulimit -t under ubuntuubuntu下的ulimit -t
【发布时间】:2010-11-01 23:23:45
【问题描述】:

我正在运行 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' 是一个无限循环。我预计程序会在 1 秒后中断,但它并没有停止。我在 Linux Fedora 安装上尝试了同样的方法,它按预期工作。

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

--tsf

【问题讨论】:

    标签: linux ubuntu ulimit


    【解决方案1】:

    正如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 毫秒的 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
    

    【讨论】:

    • 不,我的程序中没有任何睡眠。请注意,它在 Fedora 下按预期工作,因此在我的 Ubuntu 上看起来像是配置问题。
    • 我在不同的主题下发布了相同的问题,并通过将我引导至:bugs.launchpad.net/ubuntu/jaunty/%2Bsource/linux/%2Bbug/361508 这解释了问题!
    • 谢谢,我在答案的顶部添加了您的提示。我认为如果人们先看到内核错误会更好。
    猜你喜欢
    • 1970-01-01
    • 2017-01-23
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多