1 个不稳定版本
0.1.0 | 2024年5月30日 |
---|
#1003 在 命令行工具
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