ulimit用于控制shell程序的资源。此为内建命令。
使用help ulimit获得帮助资源。
-S 对当前系统生效的设置值设置(soft类型)
-H 对系统中所能设定的最大值设置(hard类型)
-a 显示目前资源限制的设置。
-b 对socket缓冲区大小设置
-c 创建核心文件最大文件大小
-d 进程数据段最大值
-e 最大调度优先级
-f shell及其子对象写入的文件的最大大小
-i 挂起信号的最大数量
-k 为进程分配的最大队列数
-l 进程可能锁定到内存中的最大大小
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-q POSIX消息队列中最大字节数
-r 最大试试调度优先级
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v 虚拟内存大小
-P 未中断最大数
-x 锁文件最大数
-T 最大线程数
例1:查看当前资源限制
从上图可以看出,部分资源是没有限制的。比如:CPU time,virtual memory,file locks。
例2:设置cpu使用时间60秒的限制
如上图,ulimit命令设置了cpu使用时间上线60秒
例3:设置打开文件句柄数不超过512
ulimit -n 512
例4:设置管道缓冲区为256k
ulimit -p 256
例5:设置为无限制(root用户为无限制)
ulimit -u unlimited
例6:设置创建文件大小最大512
ulimit -f 1
上面的命令,设置文件只有一个block,1个block为512字节。所以这文件最大不会超过5002
除了使用ulimit命令来设置资源限制,还可以通过配置文件来实现。
配置文件为:/etc/security/limits.conf
配置文件列说明:
domain : 表示用户或组的名字(比如:root),如果是组名前面加“@”来区别用户名;可以使用通配符“*”,代表所有用户
type : 一般是soft,hard和“-”。soft指的是当前系统生效的设置值;hard表示系统中所能设定的最大值;“-”代表同时设置了soft和hard的值。从前面的定义,可以得出一个结果,那就是soft的限制不能比hard高。
item : 表示需要限定的资源,可选值很多,比如stack,cpu,本别表示最大的堆栈大小,占用的cpu时间,noproc代表的是进程数,nofile代表的是文件打开数。
item列值:
列值 | 列值含义 | 对应命令行 |
core | limits the core file size(KB) | -c |
data | max data size(KB) | -d |
fsize | maximum filesize(KB) | -f |
memlock | max locked-inmemory address space(KB) | -l |
nofile | max number of open files | -n |
rss | max resident set size(KB) | -m |
stack | max stack size(KB) | -s |
cpu | max CPU time (MIN) | -t |
nproc | max number of processes(see note below) | -u |
as | address space limit(KB) | -v |
maxsyslogins | max number of flogins on the system | |
maxlogins | max number of logins for this user | |
priority | the priority to run user process with | - |
locks | max number of file locks the user can hold | -x |
sigpending | max number of ending signals | -i |
msgqueue | max memory used by POSIX message queues(bytes) | -q |
nice | max nice priority allowed to raise to values::[-20,19] | -e |
rtprio | max realtime priority | -f |
value : 对应设置的值。
配置文件编辑后,需要重新登录一次才生效。
例7:系统默认对文件打开数量的限制是1024,配置文件中修改为65535
* soft nofile 65535
* hard nofile 65535