ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
详细介绍链接地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/index.html
ulimit -a 查看系统资源限制情况, 这个限制是针对一个进程来说的。 经常用到的就是可打开的文件句柄数, 系统默认是1024, 一般情况下也够用了, 但对服务器来说, 尤其是squid, 应该将值设置的大一些, 但也不是越大越好。 个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。
ulimit -SHn 4096
H指定了硬性系统资源,S指定了软性系统资源,n表示设定单个进程最大的打开文件句柄数量。
如果想永久生效, 就在/etc/profile中加入这个命令, 并执行. /etc/profile 或者 source /etc/profile, 使配置生效。
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more 可以查看每个进程所打开的文件句柄数, 第一列是句柄数, 第二列是进程号。
补充:
一般用ulimit 来设置的话, 普通用户登录时会提示ulimit修改没有权限。 可通过修改 /etc/security/limits.conf文件来达到目的。