1 个不稳定版本

0.1.0 2024年5月30日

#1003命令行工具

MIT/Apache

13KB
228

memlimit: 进程内存限制器

此程序允许您杀死超出指定内存消耗的进程。

用法示例

memlimit-c 16GB cargo install ripgrep--forced

此命令将

  • 跟踪所有子进程(-c
  • 上限为16GB(16×1000³字节)
  • 监控命令 cargo install ripgrep --forced,如果消耗的内存超过上限,则将其杀死。

memlimit 命令将以被调用进程相同的退出代码退出,包括在它被杀死时(这可能会是一个非零值,具体取决于操作系统)。

可用标志

  • -c--children:不是只监控由传递的命令生成的进程,memlimit 将监控原始生成进程的“家族树”中的每个进程,并使用所有子进程消耗的内存总和来强制执行限制。
  • --virtual:不是监控驻留集大小内存(即进程实际消耗的内存量),memlimit 将使用虚拟内存值。(注意:标志的缩写版本,将是 -,不允许使用,因为它可能被误解为(不存在的)“详细”标志或版本标志)。

上限格式

用作上限的内存量的格式如下

  • 一个单独的数字,例如 300
  • 带有 B 后缀的数字,本质上与上面相同:300B
  • 一个数字后跟一个SI信息单位,无论是十进制(例如 300MB = 300×1000² 字节)还是二进制(例如 300MiB = 300×1024² 字节)含义。

数字和单位之间不允许有空格。

如果生成的内存量大于当前架构上可能的最大内存大小(即32位架构上的2^32和64位架构上的2^64),memlimit 将显示错误

$ # On a 64-bit computer
$ memlimit 15EiB echo hello
hello

$ memlimit 16EiB echo hello
error: invalid value '16EiB' for '<AMOUNT>': amount '16EiB' too big for current architecture

依赖项

~2–29MB
~419K SLoC