从man time
:
M Maximum resident set size of the process during its lifetime, in Kilobytes.
从ulimit -a
:
max memory size (kbytes, -m) unlimited
但“千字节”可能表示 1000 或 1024 字节。我猜这里是 1024 的整数,但我想确定一下。如果能提供权威的参考资料就更好了。
请随意重新表述我的问题如下:time
按照ulimit
IEC 建议执行,或者在千字节含义中使用“千字节/千字节”。
答案1
The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).
每info ls
:
‘-h’
‘--human-readable’
Append a size letter to each size, such as ‘M’ for mebibytes. Powers of 1024 are used, not 1000; ‘M’ stands for 1,048,576 bytes. This option is equivalent to --block-size=human-readable. Use the --si option if you prefer powers of 1000.
看起来好像单个字母就是 1024 个测量值。两个数字字符缩写为 1000 个 SI 单位。
由于ulimit
是内置于 bash 中的,因此访问其源代码是确定的...源代码。我经常开玩笑,但你可以看到它这里和这里:
Values are in 1024-byte increments, except for -t, which is in seconds,
-p, which is in increments of 512 bytes, and -u, which is an unscaled
number of processes.
您的版本可能比 bash-5.2-rc3 更旧,这没关系,自 4.0.38 发布以来,该项目的大小至少在过去十年中没有变化。您可以看到它这里和这里。
编辑:手册页units.7
详细解释了这一点,但从单位政策。
答案2
答案3
A千字节为 1000 字节(SI 前缀表示千)。千字节为 1024 字节(IEC 前缀表示千二进制)。
这个惯例自 1998 年以来一直使用,但我猜测这些前缀的使用并不像它们应该的那样广为人知。
这也是为什么 1 TB(太字节)硬盘只有 0.91 TiB(太字节,文件系统报告)。
一个相关的问题是,当作者声明给出一个数字时“千字节”由于这不是正式声明,所以你不知道他们的意思到底是这个还是那个。
由于ulimit
帮助页面显示:“值以 1024 字节为增量”我相信可以安全地假设它们确实意味着千字节当他们写作时千字节。
另一方面,由于man time
明确指出价值观千字节,人们必须假设作者知道千字节是多少,并且他们实际上指的是 1000 字节。
然而,无论如何,为了 100% 确定作者没有写任何明显错误的内容,您应该检查源代码或咨询程序的作者。
参考: