Привет, я прочитал здесь, что lsof не является точным способом получения количества файловых дескрипторов, которые в настоящее время открыты. Он рекомендовал использовать эту команду вместо
cat /proc/sys/fs/file-nr
В то время как эта команда отображает количество FD, как вы отображаете список дескрипторов открытых файлов, которые только что подсчитала команда выше?
linux
bash
command-line
Dimas
источник
источник
Ответы:
Есть две причины
lsof | wc -l
, по которым файловые дескрипторы не учитываются. Во-первых, в нем перечислены вещи, которые не являются открытыми файлами, такие как загруженные динамически связанные библиотеки и текущие рабочие каталоги; вам нужно отфильтровать их. Другой - этоlsof
запуск некоторого времени, поэтому он может пропустить файлы, которые открываются или закрываются во время работы; поэтому число открытых файлов в списке является приблизительным. Глядя на это/proc/sys/fs/file-nr
дает вам точное значение в определенный момент времени.cat /proc/sys/fs/file-nr
полезно только тогда, когда вам нужна точная цифра, в основном для проверки исчерпания ресурсов. Если вы хотите перечислить открытые файлы, вам нужно вызватьlsof
или использовать какой-либо эквивалентный метод, такой как траление/proc/*/fd
вручную.источник
/proc/*/fd
содержат символические ссылки на открытые файлы. Для визуального осмотра используйтеls -l
. Для автоматического лечения используйтеreadlink
для извлечения цели ссылки.setrlimit
(системный вызов, лежащий в основе командыulimit
оболочки) относятся к каждому процессу. Они влияют только на процесс, который выполняет вызов (и косвенно на процессы, которые он позднее разветвляет).Информация о процессе динамически хранится системой в каталогах в / proc. Например, процесс с PID 1234 будет иметь каталог с именем / proc / 1234.
Там довольно много информации, но сейчас вы заинтересованы в подкаталоге / proc / 1234 / fd .
ПРИМЕЧАНИЕ. Для просмотра или открытия файлов необходимо иметь права суперпользователя для процессов, которые вам не принадлежат, а также для процессов SetUID.
Пример:
Также взгляните на остальные файлы в / proc ... здесь содержится много полезной информации из системы.
источник