如何限制Linux中进程的时间和内存使用

超时是一个资源监视程序,用于限制Linux进程的时间和内存使用,并在超出限制时终止进程。

超时脚本是一个有用的资源监视程序,用于限制Linux中进程的时间和内存消耗。 它允许您在受控制的情况下运行程序,并强制执行时间和内存限制,在违反这些参数时终止程序。

无需安装,只需使用超时程序执行命令及其参数,它将监视命令的内存和时间消耗,如果超出限制则中断进程,并通过预定义消息通知您。

要运行此脚本,必须在Linux系统上安装Perl 5挂载/ proc文件系统

要在Linux系统上检查已安装的Perl版本,请运行以下命令。

$ perl -v
在Linux中检查Perl版本

在Linux中检查Perl版本

接下来,使用git命令超时存储库克隆到您的系统,然后使用cd命令移动到本地存储库并将其作为通常的Linux命令调用。

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

现在让我们看一下超时脚本的工作原理。

基本内存限制(100M虚拟内存):

第一个示例显示如何使用-m标志将进程的内存使用限制为100M的虚拟内存。 内存的默认单位是千字节

这里, stress-ng命令运行4个虚拟内存压力源(VMS),结合使用40%的可用内存10分钟。 因此每个压力源使用10%的可用内存。

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
限制过程记忆

限制过程记忆

考虑到上面的超时命令的输出, stress-ng工作进程在1.16秒后终止。 这是因为VMS438660千字节 )的组合内存消耗大于压力ng及其子进程允许的虚拟内存使用量。

流程的基本时限:

要启用进程的时间限制,请使用-t标志,如图所示。

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
过程的时间限制

过程的时间限制

在上面的示例中,当stress-ng CPU + SYS时间超过定义值4时 ,工作进程被终止。

限制过程的时间和记忆

您也可以一次限制内存时间 ,如下所示。

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout还支持一些高级选项,例如--detect-hangups ,它可以启用挂断检测。

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

您可以使用--memlimit-rss-s开关监视RSS驻留集大小 )内存限制。

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

此外,要返回进程的退出代码或信号+ 128,请使用--confess-c选项,如图所示。

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

有关更多信息和用法示例,请参阅超时 Github存储库: https//github.com/pshved/timeout

您可能还会发现以下相关文章同样有用:

  1. 如何在批处理模式下使用'top'按内存使用率查找前15个进程
  2. CPUTool - 限制和控制Linux中任何进程的CPU利用率
  3. 如何使用CPULimit工具限制Linux中进程的CPU使用率

超时脚本是一个简单的资源监视程序,它实质上限制了Linux中进程的时间和内存消耗。 您可以通过下面的评论表单向我们提供有关超时脚本的反馈。