进程有更多的开放式套接字,应该由prlimit允许

运行debian jessie。 以root身份完成以下操作以避免任何权限问题。 首先我find我的程序的PID,然后检查它的打开的文件限制,以validation它设置为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 

为了更好的衡量,我检查过程没有任何subprocess,它可能是委托文件开头:

 $ pgrep -P 673 # no output 

这里怎么了?

因为按照你使用lsof的方式,你正在计算所有的东西,不仅是文件描述符,而且是这样的:

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

但更简单的方法是:

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