limits.conf详解

1. /etc/security/limits.conf

limits.conf的格式如下:

分成四个段落domain,type,item,value

[domain] [type] [item] [value]

domain

username|@groupname 设置需要被限制的用户名或组,组名前面加@和用户名区别;
也可以用通配符*来做所有用户的限制。

type:有 soft,hard 和 –

soft 指的是当前系统生效的设置值(警告)
hard 表明系统中所能设定的最大值(错误)
soft 的限制不能比har 限制高,- 表明同时设置了 soft 和 hard 的值。

item:有以下几种

core - 限制内核文件的大小(KB)
date - 最大数据大小(KB)
fsize - 最大文件大小(KB)
memlock - 最大锁定内存地址空间(KB)
nofile - 打开的文件描述符的最大数目**(经常设置)**
rss - 最大持久设置大小(KB)
stack - 最大堆栈大小(KB)
cpu - 最大CPU时间(min)
noproc - 过程最大数量
as - 地址空间限制(KB)
maxlogins - 此用户的最大登录数量
maxsyslogins - 在系统上登录的最大数目
priority - 优先级运行用户进程
locks -  文件的最大数量锁定用户可容纳
sigpending - 最大挂起信号的数量
msgqueue - 通过POSIX消息队列使用的最大内存(字节)
nice - 最大不错优先允许提高到值:[-20,19]
rtprio - 最大实时优先

2. ulimit命令

命令参数

-a  显示所有限制
-c  core文件大小的上限
-d  进程数据段大小的上限
-f  shell所能创建的文件大小的上限
-m  驻留内存大小的上限
-s  堆栈大小的上限
-t  每秒可占用的CPU时间上限
-p  管道大小
-n  打开文件数的上限
-u  进程数的上限
-v  虚拟内存的上限

ulimit用法

# 显示所有设置
ulimit -a
# 对某程序的限制
ulimit -s 512
# 限制线程栈大小
ulimit -p 512

除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。

注:ulimit命令设置只是当时生效,limits.conf配置文件才是永久生效。