'\" te .\" Portions Copyright (c) 2010, 2015, Oracle and/or its affiliates.All rights reserved. .\" Copyright (c) 1982-2007 AT&T Knowledge Ventures .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Oracle gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.In the following statement, the phrase "this text" refers to portions of the system documentation.Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document.The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.This notice shall appear on any product containing this material. .TH limit 1 "2015 年 5 月 21 日" "SunOS 5.11" "用户命令" .SH 名称 limit, ulimit, unlimit \- 设置或获取可用于当前 shell 及其后代的系统资源的限制 .SH 用法概要 .LP .nf \fB/usr/bin/ulimit\fR [\fB-f\fR] [\fIblocks\fR] .fi .SS "sh" .LP .nf \fBulimit\fR [\fB-\fR [HS] [a | cdfnstv]] .fi .LP .nf \fBulimit\fR [\fB-\fR [HS] [c | d | f | n | s | t | v]] \fIlimit\fR .fi .SS "csh" .LP .nf \fBlimit\fR [\fB-h\fR] [\fIresource\fR [\fIlimit\fR]] .fi .LP .nf \fBunlimit\fR [\fB-h\fR] [\fIresource\fR] .fi .SS "ksh88" .LP .nf \fBulimit\fR [\fB-HSacdfnstv\fR] [\fIlimit\fR] .fi .SS "ksh" .LP .nf \fBulimit\fR [\fB-HSacdfmnpstv\fR] [\fIlimit\fR] .fi .SH 描述 .SS "/usr/bin/ulimit" .sp .LP \fBulimit\fR 实用程序可设置或报告文件大小的写入限制,适用于由 shell 及其子进程编写的文件(可以读取任意大小的文件)。只有具有相应特权的进程才可以提高此限制。 .SS "sh" .sp .LP Bourne shell 内置函数 \fBulimit\fR 可输出或设置资源硬限制或软限制。\fBgetrlimit\fR(2) 中介绍了这些限制。 .sp .LP 如果不存在 \fIlimit\fR,则 \fBulimit\fR 会输出指定的限制。一次可以输出任意数量的限制。\fB-a\fR 选项可输出所有限制。 .sp .LP 如果存在 \fIlimit\fR,则 \fBulimit\fR 会将指定的限制设置为 \fIlimit\fR。字符串 \fBunlimited\fR 请求删除当前限制(如果有)。所有用户都可以将软限制设置为小于或等于硬限制的任意值。所有用户都可以降低硬限制。只有具有相应特权的用户才可以提高或删除硬限制。请参见 \fBgetrlimit\fR(2)。 .sp .LP \fB-H\fR 选项指定硬限制。\fB-S\fR 选项指定软限制。如果未指定任何一个选项,则 \fBulimit\fR 会同时设置这两个限制,并输出软限制。 .sp .LP 以下选项指定要输出或设置其限制的资源。如果未指定选项,则会输出或设置文件大小限制。 .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .RS 6n .rt 最大核心文件大小(以 512 字节块为单位) .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .RS 6n .rt 最大数据段或堆大小(以千字节为单位) .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .RS 6n .rt 最大文件大小(以 512 字节块为单位) .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .RS 6n .rt 最大文件描述符加 1 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .RS 6n .rt 最大栈段大小(以千字节为单位) .RE .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .RS 6n .rt 最长 CPU 时间(以秒为单位) .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .RS 6n .rt 最大虚拟内存大小(以千字节为单位) .RE .SS "csh" .sp .LP C-shell 内置函数 \fBlimit\fR 会限制当前进程或其产生的任何进程的消耗,使每个进程的消耗都不超过指定的 \fIresource\fR 上的 \fIlimit\fR。字符串 \fBunlimited\fR 请求删除当前限制(如果有)。如果省略了 \fIlimit\fR,则会输出当前限制。如果省略了 \fIresource\fR,则会显示所有限制。 .sp .ne 2 .mk .na \fB\fB-h\fR\fR .ad .RS 6n .rt 使用硬限制而非当前限制。硬限制对当前限制的值施加了一个上限。只有特权用户可以增大硬限制。 .RE .sp .LP \fIresource\fR 为以下值之一: .sp .ne 2 .mk .na \fB\fBcputime\fR\fR .ad .RS 16n .rt 每个进程的最大 \fBCPU\fR 秒数。 .RE .sp .ne 2 .mk .na \fB\fBfilesize\fR\fR .ad .RS 16n .rt 允许的最大单个文件。限制为文件系统的大小和文件系统的功能。请参见 \fBdf\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fBdatasize\fR\fR .ad .RS 16n .rt 进程堆的最大大小(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fBstacksize\fR\fR .ad .RS 16n .rt 进程的最大堆栈大小。缺省栈大小为 2^13。 .RE .sp .ne 2 .mk .na \fB\fBcoredumpsize\fR\fR .ad .RS 16n .rt 核心转储(文件)的最大大小。它限制为文件系统的大小。 .RE .sp .ne 2 .mk .na \fB\fBdescriptors\fR\fR .ad .RS 16n .rt 文件描述符的最大数目。可以运行 \fBsysdef\fR(1M) 命令来获取适合您的系统的最大可能限制。\fBsysdef\fR 报告的值为十六进制,但可以使用 \fBbc\fR(1) 命令转换为十进制数字。 .RE .sp .ne 2 .mk .na \fB\fBmemorysize\fR\fR .ad .RS 16n .rt 虚拟内存的最大大小。 .RE .sp .LP \fIlimit\fR 为数字,具有一个可选的比例因子,如下所示: .sp .ne 2 .mk .na \fB\fIn\fR \fBh\fR\fR .ad .RS 9n .rt 小时(对于 \fBcputime\fR)。 .RE .sp .ne 2 .mk .na \fB\fIn\fR\fBk\fR\fR .ad .RS 9n .rt \fIn\fR 千字节。这是针对除 \fBcputime\fR 之外的所有对象的缺省值。 .RE .sp .ne 2 .mk .na \fB\fIn\fR\fBm\fR\fR .ad .RS 9n .rt \fIn\fR 兆字节或分钟(对于 \fBcputime\fR)。 .RE .sp .ne 2 .mk .na \fB\fImm\fR\fB:\fR\fIss\fR\fR .ad .RS 9n .rt 分钟和秒(对于 \fBcputime\fR)。 .RE .sp .LP \fBunlimit\fR 可删除 \fIresource\fR 上的限制。如果未指定 \fIresource\fR,则会删除所有资源限制。有关资源名称的列表,请参见 \fBlimit\fR 命令的说明。 .sp .ne 2 .mk .na \fB\fB-h\fR\fR .ad .RS 6n .rt 删除对应的硬限制。只有特权用户可以执行此操作。 .RE .SS "ksh88" .sp .LP Korn shell 内置函数 \fBulimit\fR 可设置或显示资源限制。下面列出了可用的资源限制。许多系统都不包含这些限制中的一个或多个。如果指定了 \fIlimit\fR,则会设置指定资源的限制。\fIlimit\fR 的值可以是一个数字(采用下列随每种资源指定的单位),也可以为值 \fBunlimited\fR。字符串 \fBunlimited\fR 请求删除当前限制(如果有)。\fB-H\fR 和 \fB-S\fR 标志指定是否设置了指定资源的硬限制或软限制。硬限制一旦设置便不能增加。软限制最多可增加至硬限制的值。如果未指定 \fB-H\fR 或 \fB-S\fR 选项,此限制同时适用于两个选项。如果省略了 \fIlimit\fR,则会输出当前资源限制。此种情况下,除非指定 \fB-H\fR,否则将输出软限制。如果指定了多种资源,则会在值之前输出限制名称及单位。 .sp .ne 2 .mk .na \fB\fB-a\fR\fR .ad .RS 6n .rt 列出当前的所有资源限制。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .RS 6n .rt 核心转储大小中的 512 字节块的数目。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .RS 6n .rt 数据区域大小中的千字节数目。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .RS 6n .rt 子进程可写入的文件中的 512 字节块的数目(可以读取任意大小的文件)。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .RS 6n .rt 文件描述符数目加 1。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .RS 6n .rt 栈区域大小中的千字节数目。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .RS 6n .rt 各进程使用的(CPU 时间)秒数。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .RS 6n .rt 虚拟内存的千字节数目。 .RE .sp .LP 如果未指定任何选项,则采用 \fB-f\fR。 .SS "每个 Shell 的内存参数" .sp .LP \fBheapsize\fR、\fBdatasize\fR 和 \fBstacksize\fR 参数不是系统可调参数。对它们仅有的控制是在 shell 启动文件中设置的硬限制,或系统范围的软限制,针对当前的 Solaris OS 版本,该限制为 2^13 字节。 .SS "ksh" .sp .LP \fBulimit\fR 设置或显示资源限制。在设置了资源限制之后,将适用于当前进程以及创建的每个子进程。如果指定了 \fIlimit\fR,则会设置资源限制,否则会在标准输出中显示其当前值。 .sp .LP 提高资源的限制通常需要特殊特权。某些系统允许您先降低资源限制,稍后再提高限制。这称为软限制。一旦设置了硬限制,便不能增加资源。 .sp .LP 不同的系统允许您指定不同的资源,某些系统会限制资源限制可提高的幅度。 .sp .LP \fIlimit\fR 的值取决于为每个资源列出的资源单位。此外,\fIlimit\fR 可以是 “unlimited”,指示该资源没有任何限制。 .sp .LP 如果未指定 \fB-H\fR 或 \fB-S\fR,则 \fB-S\fR 用于列出资源,而 \fB-S\fR 和 \fB-H\fR 均用于设置资源。 .sp .LP 如果未指定任何资源,则缺省值为 \fB-f\fR。 .sp .LP 下列选项适用于 \fBksh\fR 中的 \fBulimit\fR: .sp .ne 2 .mk .na \fB\fB-a\fR\fR .ad .RS 13n .rt 显示所有当前资源限制。 .RE .sp .ne 2 .mk .na \fB\fB-b\fR\fR .ad .br .na \fB\fB--sbsize\fR\fR .ad .RS 13n .rt 指定套接字缓冲区大小(以字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .br .na \fB\fB--core\fR\fR .ad .RS 13n .rt 指定核心文件大小(以块为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .br .na \fB\fB--data\fR\fR .ad .RS 13n .rt 指定数据大小(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .br .na \fB\fB--fsize\fR\fR .ad .RS 13n .rt 指定文件大小(以块为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-H\fR\fR .ad .RS 13n .rt 显示或设置硬限制。 .RE .sp .ne 2 .mk .na \fB\fB-L\fR\fR .ad .br .na \fB\fB--locks\fR\fR .ad .RS 13n .rt 指定文件锁的数目。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .br .na \fB\fB--memlock\fR\fR .ad .RS 13n .rt 指定锁定的地址空间(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-M\fR\fR .ad .br .na \fB\fB--as\fR\fR .ad .RS 13n .rt 指定地址空间限制(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .br .na \fB\fB--nofile\fR\fR .ad .RS 13n .rt 指定打开的文件数目。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR\fR .ad .br .na \fB\fB--pipe\fR\fR .ad .RS 13n .rt 指定管道缓冲区大小(以字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-m\fR\fR .ad .br .na \fB\fB--rss\fR\fR .ad .RS 13n .rt 指定驻留集大小(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-S\fR\fR .ad .RS 13n .rt 显示或设置软限制。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .br .na \fB\fB--stack\fR\fR .ad .RS 13n .rt 指定栈大小(以千字节为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR\fR .ad .br .na \fB\fB--threads\fR\fR .ad .RS 13n .rt 指定线程数。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .br .na \fB\fB--cpu\fR\fR .ad .RS 13n .rt 指定 CPU 时间(以秒为单位)。 .RE .sp .ne 2 .mk .na \fB\fB-u\fR\fR .ad .br .na \fB\fB--nproc\fR\fR .ad .RS 13n .rt 指定进程数。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .br .na \fB\fB--vmem\fR\fR .ad .RS 13n .rt 指定进程大小(以千字节为单位)。 .RE .SH 选项 .sp .LP \fB/usr/bin/ulimit\fR 支持以下选项: .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .RS 6n .rt 设置(如果不存在 \fIblocks\fR 操作数,则报告)文件大小限制(以块为单位)。\fB-f\fR 选项也是缺省值。 .RE .SH 操作数 .sp .LP \fB/usr/bin/ulimit\fR 支持以下操作数: .sp .ne 2 .mk .na \fB\fIblocks\fR\fR .ad .RS 10n .rt 用作新文件大小限制的 512 字节块数目。 .RE .SH 示例 .SS "/usr/bin/ulimit" .LP \fB示例 1 \fR限制栈大小 .sp .LP 以下示例将栈大小限制为 512 千字节: .sp .in +2 .nf example% \fBulimit -s 512\fR example% \fBulimit -a\fR time(seconds) unlimited file(blocks) 100 data(kbytes) 523256 stack(kbytes) 512 coredump(blocks) 200 nofiles(descriptors) 64 memory(kbytes) unlimited .fi .in -2 .sp .SS "sh/ksh88" .LP \fB示例 2 \fR限制文件描述符的数目 .sp .LP 以下命令将文件描述符的数目限制为 12 个: .sp .in +2 .nf example$ \fBulimit -n 12\fR example$ \fBulimit -a\fR time(seconds) unlimited file(blocks) 41943 data(kbytes) 523256 stack(kbytes) 8192 coredump(blocks) 200 nofiles(descriptors) 12 vmemory(kbytes) unlimited .fi .in -2 .sp .SS "csh" .LP \fB示例 3 \fR限制核心转储文件大小 .sp .LP 以下命令将核心转储文件大小限制为 0 千字节: .sp .in +2 .nf example% \fBlimit coredumpsize 0\fR example% \fBlimit\fR cputime unlimited filesize unlimited datasize 523256 kbytes stacksize 8192 kbytes coredumpsize 0 kbytes descriptors 64 memorysize unlimited .fi .in -2 .sp .LP \fB示例 4 \fR删除核心文件大小的限制 .sp .LP 下列命令删除了核心文件大小的上述限制: .sp .in +2 .nf example% \fBunlimit coredumpsize\fR example% \fBlimit\fR cputime unlimited filesize unlimited datasize 523256 kbytes stacksize 8192 kbytes coredumpsize unlimited descriptors 64 memorysize unlimited .fi .in -2 .sp .SH 环境变量 .sp .LP 有关影响 \fBulimit\fR 执行的以下环境变量的说明,请参见 \fBenviron\fR(5):\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR 和 \fBNLSPATH\fR。 .SH 退出状态 .sp .LP \fBulimit\fR 返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 成功完成。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 设置更高限制的请求被拒绝,或出现了错误。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .SS "/usr/bin/ulimit、csh、ksh88、sh" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SS "ksh" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ 接口稳定性Uncommitted(未确定) .TE .SH 另请参见 .sp .LP \fBbc\fR(1)、\fBcsh\fR(1)、\fBksh\fR(1)、\fBksh88\fR(1)、\fBsh\fR(1)、\fBdf\fR(1M)、\fBsu\fR(1M)、\fBswap\fR(1M)、\fBsysdef\fR(1M)、\fBgetrlimit\fR(2)、\fBattributes\fR(5)、\fBenviron\fR(5)、\fBstandards\fR(5) .SH 附注 .sp .LP 请注意,将 \fBulimit\fR 与其他 Solaris 资源限制功能(如 \fBprctl\fR(1))一起使用时,可能会出现意外后果。请参见 \fBresource-controls \fR(5)。 .sp .LP 使用 \fBresource-controls \fR(5) 中介绍的项目资源控制时,应使用 \fBprctl\fR(1) 以准确了解任何给定时间的有效限制。