Запуск 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
Что здесь не так?
Потому что в том, как вы используете lsof
, вы считаете все, а не только файловые дескрипторы, используйте что-то вроде этого:
lsof -n -p <pid_number> | awk '$5 ~ /([0-9].+)/'
Но более простой способ:
ls -l /proc/673/fd | wc -l