显示系统打开进程以及文件的限制信息
#ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30494
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
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) 30494
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
"open files (-n) 65535 "是Linux操作系统对一个进程打开的文件句柄数量的限制,也包含打开的SOCKET数量。
ulimit命令可以修改其值,ulimit -SHn 65535,但是只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效。
/proc/sys/fs/file-max配置的是系统总限制,/proc/sys/fs/file-nr,可以也看到整个系统目前使用的文件句柄数量。
lsof可以很方便看到某个进程开了哪些句柄
查看当前进程的文件打开数:lsof -p PID | wc –l
查看当前端口的文件打开数:lsof -i:PORT | wc -l
在使用lsof之前需要注意,lsof不适合查看一个连接数很高或者数量动态变化过快的进程或端口。
限制每个用户最大进程数
ulimit -u 65535
限制每个进程可以打开的文件数目
ulimit -n 65535
要想永久改变配置信息还是要修改配置文件/etc/securuty/limits.conf,重新登录系统生效
- soft noproc 65535
- hard noproc 65535
- soft nofile 65535
- hard nofile 65535
就是限制了任意用户的最大线程数和文件数为65535
设置为星号代表全局,也可以针对不同的用户做出不同的限制
两种限制等级hard和soft,分别对应的参数开关是-H和-S,hard限制使得非root用户不得增加(超过)设定的值,soft限制允许非root用户增加到hard的限制值,通常一般会将hard值和soft值设置成一个相同的值。
参考:
http://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html
https://www.linuxidc.com/Linux/2017-06/145313.htm