进程打开的套接字数量超出 prlimit 允许的数量

进程打开的套接字数量超出 prlimit 允许的数量

运行 debian jessie。以下操作以 root 身份执行,以避免任何权限问题。首先,我找到程序的 pid,然后检查其打开文件限制以验证它是否设置为 1024。但是当我计算打开文件的数量时,我发现 1851。

$ pgrep -x process_name
673
$ prlimit --pid 673 --nofile
RESOURCE DESCRIPTION              SOFT HARD UNITS
NOFILE   max number of open files 1024 4096 
$ lsof -n -p 673 | grep -c "IPv4"
1851

为了确保万无一失,我检查了该进程是否没有任何可能将文件打开委托给的子进程:

$ pgrep -P 673
# no output

这里出了什么问题?

答案1

因为在您使用的方式中lsof,您要计算所有内容,而不仅仅是文件描述符,请使用如下方法:

lsof -n  -p <pid_number> | awk '$5 ~ /([0-9].+)/'

但更简单的方法是:

ls -l /proc/673/fd | wc -l 

相关内容