Tsf*_*Tsf 9 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
Lud*_*erl 17
正如Tsf指出的那样,问题是由于内核2.6.28中的一个错误.我留下原来的答案,因为我认为无论如何它都会有所帮助.
来自ulimit联机帮助页
-t The maximum amount of cpu timein seconds.
关于ulimit的重要性仅仅是CPU时间.尝试像这样启动你的程序:
time myprogram
Run Code Online (Sandbox Code Playgroud)
这将显示它真正使用了多少CPU时间.
我怀疑你的无限循环包含sleep()
,睡眠时间不会影响进程的CPU时间.
这会在一秒后被杀死:
me@host:~$ bash
me@host:~$ ulimit -t 1; for (( i=1; 1; i++ )); do a=1; done
Killed
Run Code Online (Sandbox Code Playgroud)
这似乎永远存在(但当然不是):
me@host:~$ bash
me@host:~$ ulimit -t 1; for (( i=1; 1; i++ )); do sleep 1; done
Run Code Online (Sandbox Code Playgroud)
像这样测量CPU时间......
me@host:~$ time for (( i=1; i<5; i++ )); do sleep 1; done
Run Code Online (Sandbox Code Playgroud)
...... 5秒钟后......
real 0m4.008s
user 0m0.000s
sys 0m0.012s
Run Code Online (Sandbox Code Playgroud)
...仅使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8756 次 |
| 最近记录: |