Действительно ли нормально для тысяч файлов быть открытым программами Ubuntu?

Используя lsof, как предложено в Слишком многих открытых файлах - как найти преступника, я нашел, что тысячи файлов открыты из-за программ стиля операционной системы такой как unity-2d-, gnome-do, и nautilus. Только один из лучших 50 является программой прикладного стиля (Firefox).

lsof | perl -lane '$x{"$F[0]:$F[1]"}++;
END { print "$x{$_}\t$_" for sort {$x{$a}<=>$x{$b}} keys %x}' | tail -50

lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /var/lib/lightdm/.gvfs
      Output information may be incomplete.
216 unity-2d-:26285
216 unity-2d-:31600
216 unity-2d-:2577
239 nautilus:30626
239 nautilus:3777
239 nautilus:31250
239 nautilus:30781
239 nautilus:15101
241 nautilus:26123
241 nautilus:20495
241 nautilus:9627
241 nautilus:31612
241 nautilus:26298
243 nautilus:7672
243 nautilus:603
243 nautilus:21594
243 nautilus:2590
243 nautilus:17574
243 firefox:9768
243 nautilus:12422
247 nautilus:14265
256 gnome-do:31632
256 gnome-do:20519
256 gnome-do:26318
256 gnome-do:9647
256 gnome-do:26143
257 gnome-do:12437
257 gnome-do:14284
257 gnome-do:21612
257 gnome-do:622
257 gnome-do:7686
257 gnome-do:2608
257 gnome-do:17603
270 unity-2d-:3756
270 unity-2d-:30612
272 unity-2d-:15087
277 unity-2d-:12408
277 unity-2d-:21580
278 unity-2d-:2576
278 unity-2d-:14251
278 unity-2d-:587
279 unity-2d-:9613
279 unity-2d-:30768
279 unity-2d-:20481
280 unity-2d-:26109
281 unity-2d-:26284
283 unity-2d-:31599
284 unity-2d-:31235
288 unity-2d-:7658
290 unity-2d-:17559

Действительно ли это нормально, или является чем-то не так?

5
задан 13 April 2017 в 15:23

1 ответ

Да, Это нормально. Операционная система может иметь тысячи файлов, открытых одновременно в любой момент. Например, в данный момент, моя система имеет 5 858 открытых файлов.

$ lsof | wc -l
5858

Обратите внимание на то, что, lsof списком по умолчанию все файлы, открытые всеми процессами. Так, если к файлу получат доступ два различных процесса, то в выводе lsof будет два отличных экземпляра.

Также обратите внимание, файл не все регулярные файлы. в руководстве lsof говорится

Открытый файл может быть регулярным файлом, каталогом, блок специальный файл, символьный специальный файл, выполняющаяся текстовая ссылка, библиотека, поток или сетевой файл (интернет-сокет, файл NFS или сокет домена UNIX.) Определенный файл или все файлы в файловой системе могут быть выбраны путем.

Но существует тонкое различие в открытых файлах и открытых дескрипторах файлов. См. эту статью для чтения этой интересной темы. Важный момент

Что такое открытый файл?

Открытый файл является файлом, который используется, или действительно ли это - открытый дескриптор файла? Дескриптор файла является структурой данных, используемой программой, чтобы разобраться с файлом, самое известное существо 0,1,2 для стандарта в, стандарт и стандартная погрешность. Макс. файлом параметр ядра относится для открытия дескрипторов файлов, и номер файла дает нам текущее количество открытых дескрипторов файлов. Но lsof перечисляет все открытые файлы, включая файлы, которые не используют дескрипторы файлов - такие как текущие рабочие каталоги, файлы библиотеки с отображенной памятью и исполняемые текстовые файлы. Для иллюстрирования давайте исследуем различие между выводом lsof для данного pid и дескрипторами файлов, перечисленными для того pid в/proc.

Также смотрите на эти ссылки

3
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: