ulimit 命令
用途
设置或报告用户资源极限。
语法
ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -r ] [ -s ] [ -t ] [-u ][ 限制 ]
描述
ulimit 命令设置或报告用户进程资源极限,如 /etc/security/limits 文件所定义。 文件包含以下缺省值极限:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
threads = -1
nproc = -1
当新用户添加到系统中时,这些值被作为缺省值使用。 当向系统中添加用户时,以上值通过 mkuser 命令设置,或通过 chuser 命令更改。
极限分为软性或硬性。 通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。 要更改资源硬极限,必须拥有 root 用户权限。
很多系统不包括以上一种或数种极限。 特定资源的极限在指定 Limit 参数时设定。 Limit 参数的值可以是与每个资源一起指定的单位中的数字,也可以是值unlimited. 将具体 ulimit 设置为unlimited,使用词unlimited
注: 在 /etc/security/limits 文件中设置缺省限制将设置系统范围的限制,而不仅仅是创建用户时用户所接受的限制。
省略 Limit 参数时,将会打印出当前资源极限。 除非用户指定 -H 标志,否则打印出软极限。 当用户指定一个以上资源时,极限名称和单元在值之前打印。 如果未给予选项,那么假定带有了 -f 标志。
由于 ulimit 命令影响当前 shell 环境,所以它将作为 shell 常规内置命令提供。 如果在独立的命令执行环境中调用该命令,那么不影响调用者环境的文件大小极限。 以下示例中正是这种情况:
nohup ulimit -f 10000
env ulimit 10000
一旦通过进程减少了硬极限,若无 root 特权则无法增加,即使返回到原值也不可能。
标志
| 项 | 描述 |
|---|---|
| -a | 列出所有当前资源极限。 |
| -c | 以 512 字节块为单位,指定核心转储的大小。 |
| -d | 以 K 字节为单位指定数据区域的大小。 |
| -f | 使用 Limit 参数时设定文件大小极限(以块为单位),或者在未指定参数时报告文件大小极限。 -f 标志是缺省值。 |
| -h | 指定设置某个给定资源的硬极限。 如果用户拥有 root 用户权限,可以增大硬极限。 任何用户均可减少硬极限。 |
| -M | 以 K 字节为单位指定物理内存的大小(驻留集合大小)。 系统未强制实施此限制。 |
| -n | 指定一个进程可以拥有的文件描述符数的极限。 |
| -r | 指定对进程拥有线程数的限制。 |
| -s | 以 K 字节为单位指定堆栈的大小。 |
| -S | 指定为给定的资源设置软极限。 软极限可增大到硬极限的值。 如果 -H 和 -S 标志均未指定,极限适用于以上二者。 |
| -t | 指定每个进程所使用的秒数。 |
| -U | 指定对用户可以创建的进程数的限制。 |
退出状态
返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| > 0 | 拒绝对更高的极限的请求,或发生错误。 |
示例
要将文件大小极限设置为 51,200 字节,请输入:
ulimit -f 100要列示当前的所有资源限制,请输入:
ulimit -a
time(seconds) unlimited
file(blocks) 2097151
data(kbytes) 131072
stack(kbytes) 32768
memory(kbytes) 65536
coredump(blocks) 2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user) unlimited文件数
| 项 | 描述 |
|---|---|
| /usr/bin/ksh | 包含 ulimit 内置命令。 |