源地址:(https://blog.csdn.net/bolg_hero/article/details/77622616)
----查看当前进程打开了多少句柄数
#其中按进程统计句柄数 第一列是打开的句柄数,第二列是进程ID。
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
#其中按句柄类型统计句柄数 其中REG代表文件
lsof -n|awk '{print $5}'|sort|uniq -c|sort -nr
#查看总共文件句柄数
lsof|wc -l
#查看网络句柄数 和用netstat统计一样,原理是:linux中一切皆文件(内存、网络、硬盘。。。)
lsof |grep IPv4|wc -l
lsof |grep TCP|wc -l
--查看系统默认的最大文件句柄数,系统默认是1024
# ulimit -n
1024
----查看当前进程打开了多少句柄数
# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
131 24204
57 24244
57 24231 ........
其中第一列是打开的句柄数,第二列是进程ID。
可以根据ID号来查看进程名。
# ps aef|grep 24204
nginx 24204 24162 99 16:15 ? 00:24:25 /usr/local/nginx/sbin/nginx -s
Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
# ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后.
查看所有进程的文件打开数
lsof |wc -l
查看某个进程打开的文件数
lsof -p pid |wc -l