2011-05-16 81 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