Linux下查看进程打开的文件句柄数
转载wangfei111g 发布于2018-07-19 17:57:33 阅读数 1024 收藏
展开
查看主机打开文件句柄数:
lsof|awk ‘{print $2}’|wc -l
—-查看当前进程打开了多少句柄数
#其中按进程统计句柄数 第一列是打开的句柄数,第二列是进程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 -Hn 4096
#ulimit -Sn 1024
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后.
查看所有进程的文件打开数
lsof |wc -l
查看某个进程打开的文件数
lsof -p pid |wc -l
查看文件对应的进程:
lsof file-name
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 18773 root 50w REG 253,0 174391 68712807 /xx/xx/xx.log
tail 26724 root 3r REG 253,0 174391 68712807 /xx/xx/xx.log
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如 cwd、txt等
TYPE:文件类型,如 DIR、REG、IPV4、FIEO等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称