ulimit 命令详解
ulimit 的简介及常用参数
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。
参数 描述 ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files) 和可同时运行的最大进程数(max user processes)无效 -a 列出所有当前资源极限 -b 最大套接字缓冲区大小 -c 设置core文件的最大值.单位:blocks -d 设置一个进程的数据段的最大值.单位:kbytes -f Shell 创建文件的文件大小的最大值,单位:blocks -h 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限 -k 可以分配的最大 kqueue 数 -i 待处理信号的最大数量 -l 可以锁住的物理内存的最大值 -m 可以使用的常驻内存的最大值,单位:kbytes -n 每个进程可以同时打开的最大文件数 -p 设置管道的最大值,单位为block,1block=512bytes -s 指定堆栈的最大值:单位:kbytes,Java程序需要适当的设置大一点 -S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者 -t 指定每个进程所使用的秒数,单位:seconds -u 单个用户可用的最大进程数 -v 进程可用的最大虚拟内存量,单位:kbytes -x 文件锁的最大数量 -T 最大线程数
l临时生效
ulimit -u 10240 # 用户的最大进程数 ulimit -n 4096 #每个进程可打开的文件数 ulimit -d unlimited #数据段长度 ulimit -m unlimited #最大内存大小 ulimit -s unlimited #堆栈大小 ulimit -t unlimited #CPU 时间 ulimit -v unlimited #虚拟内存
永久生效
修改所有 linux 用户的环境变量文件
vi /etc/profile.d/ulimit.sh # ~/.bashrc ulimit -u 10000 ulimit -n 4096 ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited ulimit -t unlimited ulimit -v unlimited
修改配置文件
# vi /etc/security/limits.conf #<domain> <type> <item> <value> * - core <value> * - data <value> * - priority <value> * - fsize <value> * soft sigpending <value> eg:57344 * hard sigpending <value> eg:57444 * - memlock <value> * - nofile <value> eg:1024 * - msgqueue <value> eg:819200 * - locks <value> * soft core <value> * hard nofile <value> @<group> hard nproc <value> <user> soft nproc <value> %<group> hard nproc <value> <user> hard nproc <value> @<group> - maxlogins <value> <user> hard cpu <value> <user> soft cpu <value> <user> hard locks <value>
<domain>可以是以下值
:
用户名 组名,带有@group语法 通配符*,用于默认条目 通配符%,也可以与%group语法一起使用,用于maxlogin限制
<type>
可以有两个值:
soft:用于执行软限制 hard:用于执行硬限制
<item>
可以是以下之一
core- 限制核心文件大小 (KB) data- 最大数据大小 (KB) fsize- 最大文件大小 (KB) memlock- 最大锁定内存地址空间 (KB) nofile- 最大打开文件数 rss- 最大驻留集大小 (KB) stack- 最大堆栈大小 (KB) cpu- 最大 CPU 时间 (MIN) nproc- 最大进程数(见下面的注释) as- 地址空间限制 (KB) maxlogins- 此用户的最大登录次数 maxsyslogins- 系统上的最大登录数 priority- 运行用户进程的优先级 locks- 用户可以持有的最大文件锁数 sigpending- 挂起信号的最大数量 msgqueue- POSIX 消息队列使用的最大内存(字节) nice- 允许提升到值的最大优先级:[-20, 19] rtprio- 最大实时优先级
注意事项
在 /etc/security/limits.conf 中设置 nproc 在 Red Hat Enterprise Linux 中无效,要在/etc/security/limits.d/90-nproc.conf文件中修改。
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少