Linux ulimit用法详解

Linux ulimit -n命令能够查看linux系统进程,所能打开文件描述符的最大值。

Linux系统应用的状态多是以文件的形式存在,ulimit相关参数能够直接影响程序。一般缺省值是1024,对一台应用程序服务器而言,此值过小因此有必要重新设值。

Linux ulimit参数说明

格式:ulimit 参数 值/unlimited。以下设置为临时有效,适用于登录 shell 会话期间。

ulimit -a 查看系统对进程的限制

ulimit -u 用户所能打开的进程数

ulimit -n 进程所能打开的文件数

ulimit -d unlimited 进程数据段长度无限制

ulimit -m unlimited 进程最大内存无限制

ulimit -s unlimited 进程堆栈大小无限制

ulimit -SHn 102400  进程句柄数限制在102400

Linux ulimit参数永久生效

通过以上方式设置的ulimit参数都是临时的,如需永久有效应在profile中进行设置。

vi /etc/profile 

ulimit -u 10000

ulimit -n 4096

ulimit -d unlimited 

ulimit -m unlimited 

ulimit -s unlimited 

ulimit -t unlimited 

ulimit -v unlimited 

将一个相应的ulimit语句添加到由登录shell读取的文件中来达到永久设置的效果。通常的做法是在/etc/security/limits.conf里进行参数设置:

vi /etc/pam.d/login

session required /lib/security/pam_limits.so

另外确保/etc/pam.d/system-auth文件有以下内容

session required /lib/security/$ISA/pam_limits.so

这一行确保系统会执行设定的限制。

PAM验证模块设置

PAM验证模块/lib/security/pam_limits.so,主要是限制用户会话过程中,对各种系统资源的使用,其对应的配置文件/etc/security/limits.conf,其格式为

Domain  type item       
用户名/组名软/硬限制 项目

vi /etc/security/limits.conf

* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100 

说明:

* 代表针对所有用户(如:root)Domain:指被限制的用户名或组。

Soft:当前系统生效的设置值(soft限制不能比hard限制高)。

-:同时设置了soft和hard的值。

noproc 代表最大进程数。

nofile 代表最大文件打开数。

重新登陆以使参数生效。

/proc目录

/proc目录下包括很多系统参数,例如:

/proc/sys/fs/file-max

/proc/sys/fs/inode-max

是针对整个系统的限制(而非针对用户),proc目录中的值可以进行动态的设置,若需永久生效,通过修改/etc/sysctl.conf文件,并使用以下命令进行确认:

sysctl -p

ulimit -a 查看系统当前进程参数

core file size          (blocks, -c) unlimited

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 15751

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 102400

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 15751

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

示例:ulimit -n 1026,查看设置结果:

ulimit -a

open files                      (-n) 1026

ulimit参数说明

ulimit用于控制shell程序所使用的资源,ulimit为shell内建指令。 参数说明如下:

-H 设置硬件资源限制。

-S 设置软件资源限制。

-a 显示程序所有的资源限制。

-u 进程数目:用户最多可启动的进程数目。

-c size:core文件的最大值,单位:blocks。

-d size:程序数据段的最大值,单位:kbytes。

-f size:shell创建文件的最大值,单位:blocks。

-l size:在内存中锁定进程的最大值,单位:kbytes。

-m size:可以使用的常驻内存的最大值.单位:kbytes

-n size:内核可以同时打开的文件描述符的最大值,单位:n。

-p size: 管道缓冲区的最大值,单位:kbytes。

-s size:堆栈的最大值,单位:kbytes。

-t size:CPU使用时间的最大上限,单位:seconds。

-v size:设置虚拟内存的最大值,单位:kbytes。