[-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆栈大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]
-
H 设置硬件资源限制,是管理员所设下的限制.
-
S 设置软件资源限制,是管理员所设下的限制.
-
a 显示当前所有的资源限制.
-
u 进程数目:用户最多可启动的进程数目.
-
c size:设置core文件的最大值.单位:blocks
-
d size:设置程序数据段的最大值.单位:kbytes
-
f size:设置shell创建文件的最大值.单位:blocks
-
l size:设置在内存中锁定进程的最大值.单位:kbytes
-
m size:设置可以使用的常驻内存的最大值.单位:kbytes
-
n size:设置内核可以同时打开的文件描述符的最大值.单位:n - Linux 文件描述符
-
p size:设置管道缓冲区的最大值.单位:kbytes
-
s size:设置堆栈的最大值.单位:kbytes
-
t size:设置CPU使用时间的最大上限.单位:seconds
-
v size:设置虚拟内存的最大值.单位:kbytes
ulimit -u 10000 # 默认1024
ulimit -n 4096 # 默认 1024
ulimit -d unlimited
ulimit -t unlimited
上述修改暂时地,适用于通过 ulimit 命令登录 shell 会话期间
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件
方式一 : 修改 /etc/security/limits.conf
* soft noproc 11000
* hard noproc 11000 # 最大进程数
* soft nofile 4100 # 最大文件打开数
* hard nofile 4100
注意部分系统是nproc
- 代表针对所有用户
方式二: 修改 /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
通过 ulimit -n或者ulimit -a 查看系统的最大文件打开数已经生效了。但此时查看进程的最大文件打开数没有变,原因是这个值是在进程启动的时候设定的,要生效必须重启!
遇到limits修改不生效的时候,请查一下进程是否只是子进程,如果是,那就要把父进程也一并重启才可以
在linux下,每个进程的limit信息保存在/proc/PID/limits文件中(linux OS kenerl > 2.6.24)。低于2.6.24版本的kenerl需要手动统计 /proc/PID/fd下面有多个少个文件
参考
Linux中的文件描述符与打开文件之间的关系 - Smah - 博客园
- 复习 ulimit (@2024-01-30)