2011-05-16 103 views
1

我做了一个需要执行某种C++程序(程序已编译)的网站。但我想限制该程序所需的资源。我想限制的资源是运行时间和已用内存。 我认为运行时间可以用command to execute & sleep time; kill $! 完成但是如果进程在休眠时间之前完成,那么该命令会导致一些延迟。Linux bash inline命令执行程序并限制资源

我不知道如何限制运行时间(没有延迟)和使用内存与内联命令。 有什么建议吗?

THX之前... 我真的很感谢你的帮助..

回答

1

命令ulimit是你的朋友

例如(ulimit -t 1; /your/program 2>/some/logfile) | head -c 100k

会做两件事情:

  • 限制最大CPU到1秒
  • 限制outp ut to 100k
+0

Thx为你的解释... 如果你不介意,我想再问一次。 ulimit是工作。我喜欢这样,但头不工作... '头:非法字节数 - 100k' – 2011-05-16 02:29:46

+0

对不起... 我的坏... 我没有意识到,100K意味着100000 ... thx。 – 2011-05-16 02:39:23

+0

这并不限制所用的内存 – 2011-05-16 04:11:02

1

查看ulimit命令。我没有用过它,但我认为它会做你想做的。

0
(ulimit -d 1000 -m 1000 -v 1000 -t 1; /your/program 2>/some/logfile) | head -c 100000 

这会限制内存大小以及时间。您可以使用ulimit -a来了解这些限制意味着什么,或者阅读bash手册页并搜索ulimit。

+0

我知道了... 感谢您的回复... :) – 2011-05-16 07:34:44

+0

这是工作.. 感谢您的回答.. 但是,为什么我的日志文件为空? 我试图给出的时间限制比我的程序运行时间短,但是,当它停止时,为什么我的日志文件empy? – 2011-05-16 07:37:49