【Linux】=>lsof -n|more=>结果区别
1> CentOS Linux release 7.4.1708 (Core) =>CentOS 7中lsof默认开启-K参数,并且不可关闭
2> CentOS release 6.9 (Final)
=>lsof -p <pid>
3> https://github.com/rapidoid/rapidoid/issues/105
=>抓取进程连接数,使用lsof -p pid 或 ls /proc/$pid/fdinfo/ | grep '^[0-9]'| wc
=>抓取系统连接数,cat /proc/sys/fs/file-nr
=>lsof -ad^0 |wc
=>ls /proc/<process-id>/fd | wc -l
【问题】是CentOS7.0高版本中lsof统计命令的问题?还是fd的占用本来就是这么多?
=>高版本lsof统计结果是准确的吗?
=>showing the same file descriptor multiple times with only the TID (thread id) changing
=>#lsof -v
=>lsof -Ki to ignore threads
=>线程应该是共享文件描述符的
=>【小结】
=>pfd=lsof -p <pid> |wc -l =>某个进程打开的文件句柄数
=>ptfd=lsof -n|grep <pid> |wc -l =>某个进程及其所有线程打开的文件句柄数
=>pt=ps -Lf <pid> |wc -l =>某个进程下的线程数量
=>ptfd~=pfd*pt
【结论】
文件句柄数应该是被进程中的线程共享的,因此,查看一个进程的文件句柄数,使用lsof -p <pid>|wc -l命令即可。