Answers:
除了Gilles的答案,还有cpulimit工具可以完全满足您的要求-包括在运行时进行修改。另外,它可以限制为仅某些CPU /内核IIRC。
在程序中,调用setrlimit(RLIMIT_CPU, ...)
。从外壳调用ulimit -t 42
(这不是标准的,但是大多数unix变体上的大多数外壳(包括bash和ksh)都支持)。一旦当前进程用完N秒的CPU时间,就会导致当前进程被终止。该限制是由子进程继承的。常见的shell习惯用法是,(ulimit -t 42; runaway_process)
如果您以后希望能够从同一shell运行其他无限的进程。
另请参见是否有一种方法可以限制Unix中特定进程可以使用的内存量? 。原理是相同的,只是限制了其他资源。
time php /cgi/foo.php
,则可以使用bash -c 'ulimit -t 42; exec "$0" "$@"' php /cgi/foo.php
。
setrlimit
并且通过PHP生成它,所以我没有外壳……