1.概念
ulimit命令,用来限制用户对shell资源的访问。
思考:进程都是用户打开的,所以限制用户对shell资源的访问,也就是限制了进程对资源的访问。
2.hard ulimit和soft ulimit的区别
1)man ulimit,查看英文释义: A hard limit cannot be increased by a non-root user once it is set; a soft limit may be increased up to the value of the hard limit.
从定义上看出,hard limit无法被非root用户修改,soft limit,可以随意修改,但是不能超过hard limit.
实验结果:
2)查看方法:
ulimit -Ha; # 查看所有资源硬限制
ulimit -Sa; # 查看所有资源软限制
ulimit -Hn; # 查看文件句柄硬限制
ulimit -Sn; # 查看文件句柄软限制
3)设定方法:
ulimit -Hn 4096
ulimit -Sn 4096
ulimit -n 4096
ps:ulimit -n设定的最大值为$((2**20))=1048576;再多加个一都会报错。
3.关联参数file-max
参数说明:
This file defines a system-wide limit on the number of open files for all processes. (所有进程同一时间能打开的最大文件句柄数。)
参数修改方法:
/etc/sysctl.conf, 加入
fs.file-max = 6553560 重启生效
4. 修改ulimit的方法
1)方式一:ulimit -n 65535;
仅在当前session生效;代码中建议用该方法。ps:子shell无效。
2)方式二:修改/etc/profile
ulimit -n 65535;对每个用户生效;
3)方式三:修改/etc/security/limits.conf
- soft nofile 32768 #限制单个进程最大文件句柄数(到达此限制时系统报警)
- hard nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错)
5.如何查看某个服务或进程的最大句柄数
1)查看某个进程占用的文件句柄数
方法一:cat /proc/pid/fd
方法二:lsof -p pid
2)如何查看正在运行的进程的ulimit资源限制
cat /proc/pid/limits;
网友评论