Меню Рубрики

Linux кол во открытых файлов

Денис Туляков – блог о том, что мне интересно

Заметки о *nix системах о железках о DB и даже о windows, возможно, ещё что то .

Страницы

2015-02-06

Количество открытых файлов, сокетов

Достаточно часто возникают ошибки связанные с тем, что превышен лимит открытых файлов или общего количества файлов.
Такие лимиты бывают нескольких видов:
– накладываемые ядром
– накладываемые PAM
– накладываются самими программами

1) Ограничения накладываемые ядром:
Просмотр текущего значения максимального количества дескрипторов открытых файлов:

cat /proc/sys/fs/file-max
Может быть легко изменено “на лету” (останется до перезагрузки компьютера):
echo “104854” > /proc/sys/fs/file-max
Если хочется чтобы новое значение использовалось постоянно, его необходимо внести в /etc/sysclt.conf:

fs.file-max=104854
Посмотреть текущее количество дескрипторов открытых файлов:

cat /proc/sys/fs/file-nr
3391 969 104854
| | |
| | |
| | максимальное число открытых файловых дескрипторов
| число занятых(выделенных), но не используемых дескрпиторов
общее число занятых дескрипторов
2) Ограничения накладываемые PAM
Если на машине используются PAM (подключаемые модули авторизации), можно столкнуться с ограничениями
на количество открытых файлов для пользователя (bind, mysql).
Ограничения задаются в /etc/security/limits.conf.
Файл хорошо документирован, есть man-страница limits.conf (5).
Есть 2 типа ограничений:
soft и hard мягкий и жесткий лимита соответственно. soft может быть изменен в самой программе. hard может быть изменен только суперпользователем. Ограничивать можно”
a. пользователя –
б. группу – @
в. всех – *

Общее количество открытых файлов можно также можно посмотреть с помощью комманды lsof:

lsof | wc -l
Эта же комманда позволяет посмотреть файлы открытые конкретными приложениями:
lsof | grep 29384 (где 29384 – это PID необходимого приложения).
Менее ресурсоёмкая команда, для этой же цели:

ls -l /proc/29384/fd/
Для работы с Unix-сокетами также требуется получение дескриптора файла, поэтому приложения работающие с UNIX-сокетами могут также попадать под ограничение на количество файлов. Для просмотра сокетов можно использовать Perl-скрипт: socklist (8), который входит в состав пакета procinfo (название пакета в Debian, RHEL) или комманду netstat (8): netstat -uxp

Источник

Как увеличить количество открытых файлов в Linux

В Linux вы можете изменить лимит открытых файлов. Это можно сделать путем использования команды ulimit. Она дает возможность контролировать ресурсы, доступные для оболочки или запущенного ею процесса.

В этом кратком руководстве мы покажем вам, как проверить текущий лимит открытых файлов и их описание. Для этого вам потребуется получить root-доступ к вашей системе.

Давайте посмотрим, как мы можем узнать лимит открытых файловых дескрипторов в вашей системе Linux.

Как найти количество открытых файлов в Linux

Значение сохраняется в

Номер, который вы увидели, показывает количество файлов, которые пользователь мог открыть для каждого сеанса входа. Результат может отличаться в зависимости от вашей системы.

Например, на сервере CentOS ограничение было установлено на 818354

Если вы хотите увидеть Hard и Soft лимит, используйте следующие команды:

Проверка Hard лимит в Linux

Проверка Soft лимит в Linux

Чтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить.Например:

Как проверить количество системных дескрипторов файлов в Linux

На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.

Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра fs.file-max. Для этого используйте утилиту sysctl.

Sysctl используется для настройки параметров ядра.

Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду:

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

С помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл:

Добавьте следующую команду:

Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы снова проверить изменения, используйте:

Чтобы изменения вступили в силу, пользователям необходимо будет выйти из системы и снова войти в систему. Если вы хотите немедленно применить ограничения, вы можете использовать следующую команду:

Установка количества открытых файлов для пользователя в Linux

Вышеприведенные примеры показали, как установить ограничения, но вы можете установить лимит для каждого пользователя. Для этой цели, с правами пользователя root, вам необходимо отредактировать следующий файл:

Если вы администратор Linux, предлагаем Вам ознакомиться с этим файлом. Прочитайте все комментарии в нем, поскольку он обеспечивает гибкость в плане управления системными ресурсами путем установки лимита пользователям на разных уровнях.

Команды, которые вы должны добавить, имеют следующие параметры:

Вот пример установки Soft и Hard лимитов для пользователя dimon:

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки.

Инструменты пользователя

Инструменты сайта

Боковая панель

Содержание

Как проверить все открытые файлы пользователем или процессом в Linux

В некоторых ситуациях на Linux могут возникать ошибки, связанные с превышением лимита использования файловых дескрипторов. Эти лимиты накладываются как самим ядром Linux, так и его программными модулями, например PAM.

Лимит ядра Linux

Узнать текущее значение максимального количества файловых дескрипторов, определяемое ядром Linux можно командой:

Этот лимит может быть изменён без перезагрузки системы (начинает действовать сразу и действует до перезагрузки):

Чтобы требуемое значение использовалось постоянно, то есть действовало и после перезагрузки, его необходимо определить в конфиг.файле /etc/sysclt.conf :

Методика подсчёта открытых файлов

Для получения информации о количестве всех открытых файлов всеми процессами в Linux некоторые «знатоки» предлагают использовать команду типа

Однако такая команда показывает гораздо большее значение, чем всего открыто файлов в системе на данный момент на самом деле. Это связано с тем, что по несколько раз в подсчёт попадают одни и теже открытые файлы, используемые разными процессами.

Поэтому проще для получения общего числа открытых файлов использовать данные ядра Linux

Первое число – общее количество занятых/используемых на данный момент времени файловых дескрипторов.
Второе число – количество выделенных процессам, но не используемых в данный момент дескрипторов.
Третье число – максимальное количество открытых дескрипторов

Примеры получения данных

Получить список TOP-20 процессов с самым большим количеством открытых файловых дескрипторов:

Подсчитать количество открытых файлов в разрезе процессов (в первой колонке будет выведен PID процесса, во второй количество открытых файлов этим процессом):

Посмотреть открытые файловые дескрипторы во всех процессах для отдельно взятого пользователя, например «apache»

Подсчитать количество открытых файлов в каждом процессе для отдельно взятого пользователя:

Тоже самое, только в реальном режиме времени:

Посмотреть открыте файловые дескриптры для отдельно взятого процесса (по PID процесса):

Подсчитать количество файловых дескриптров для отдельно взятого процесса:

Дополнительные источники информации:

Проверено на следующих конфигурациях:

Автор первичной редакции:
Алексей Максимов
Время публикации: 09.06.2018 11:18

Источник

Идентификация открытых файлов и сетевых подключений в Linux – lsof (примеры)

Lsof расшифровывает как List Open Files (список открытых файлов). Команда формирует список дескрипторов открытых файлов по процессам и именам файлов. В Линукс все является файлами (очереди, сокеты, директории, устройства и т.д. ). Таким образом, с помощью Lsof, вы можете получить информацию о любых открытых файлов.

1. Введение в lsof

Также работает рекурсивный просмотр:

6. Просмотр файлов открытых конкретным пользователем

Для поиска файлов открытых определенным пользователем, используем ключ -u

Иногда необходимо вывести файлы открытые всеми пользователями, за исключением конкретного. Для этого используется -‘^’

Данная команда выводит список файлов открытых всеми пользователями, за исключением пользователя alex1812

7. Список всех файлов открытых конкретным процессом

Для вывода списка всех файлов открытых конкретным процессов используется ключ -p. Это может быть полезно для получения большей информации о самом процессе.

8. Уничтожить все процессы используемые конкретным пользователем

Если необходимо уничтожить все процессы, имеющие открытые файлы, конкретного пользователя, мы можем использовать ключ -t для просмотра id процессов и уничтожить их с помощью kill –

Данная команда уничтожит все процессы пользователя alex1812, которые имели открытые файлы.

Аналогичным образом, вы можете использовать ключ -t для других целей, например, чтобы получить список id процессов, которые открыли /var/log/syslog

9. Комбинирование ключей

По умолчанию, если вы используете более одного ключа в Lsof, то вывод команды будет объеденен по этим ключам. Например,

В этой команде мы используем два ключа -u и -c, таким образом команда одновременно выводит и список процессов принадлежащих пользователю alex1812, и процессы начинающиеся со слова init (принадлежащих любым пользователям).

Вы можете использовать ключ -a, чтобы совместить вывод по нескольким параметрам, например процессы принадлежащие пользователю alex1812 и начинающиеся с init:

10. Выполнение Lsof в режим повтора

Lsof поддерживает вывод в режиме повтора. То бишь сначала будет выведет список файлов с заданными параметрами, затем задержка на заданный интервал и опять вывод на основе этих же параметров.

Режим повтора может быть включен ключами +r и -r. Если используем +r, то режим повтора будет прерван в случае отсутствия открытых файлов. Ключ -r будет продолжать вывод с заданным интервалом вне зависимости от наличия открытых файлов.

Каждый цикл вывода будет разделен с помощью “=======”. Мы также можем указать время задержки для обоих ключей.

В данном примере мы выводим список процессов принадлежащих alex1812 c именем x-session и задержкой повторного вывода в 5 секунд.

Поиск сетевых подключений

Сетевые соединения в Linux также являются файлами. Таким образом, мы можем найти информацию о них с помощью Lsof.

11. Просмотр всех сетевых подключений

Для просмотра всех сетевых подключений используем ключ -i

Вы также можете использовать -i4 и i6 для вывода только подключений по IPv4 или IPv6 соответственно.

12. Список всех сетевых файлов используемых конкретным процессом

В первом случае мы задаем процесс по его id, во втором по имени (по первым символам).

13. Список процессов прослушивающих определенный порт

Для этого используется ключ -i и номер порта через ‘:’

14. Список всех UDP и TCP соединений

Для вывода такого списка используем –

15. Просмотр всех NFS (Network File System) файлов

Для просмотра всех NFS файлов используем ключ -N, например просмотр всех NFS файлов открытых от пользователя alex1812 –

Надеюсь информация данной статьи будет кому-либо полезна, особенно тем, кто не любит читать man’ы =)

Источник

Популярные записи


Adblock
detector