- Идентификация открытых файлов и сетевых подключений в Linux — lsof (примеры)
- Русские Блоги
- Количество процессов и дескрипторов linux
- Единая концепция обработки и управления
- Во-вторых, ограничения ресурсов Linux
- 1. Ограничения пользовательских ресурсов
- 2. ограничение ресурса обслуживания
- 3. Лимит системных ресурсов
- Три, количество процессов ограничено
- 1. Ограничьте количество пользовательских процессов.
- 2. Лимит процесса обслуживания
- 3. Общее количество процессов в системе.
- В-четвертых, ограничение количества ручек
- 1. Ограничьте количество пользовательских дескрипторов
- 2. Предел обработки обслуживания
- 3. Общее количество системных дескрипторов.
- Вики IT-KB
- Инструменты пользователя
- Инструменты сайта
- Боковая панель
- Содержание
- Как проверить все открытые файлы пользователем или процессом в Linux
- Лимит ядра Linux
- Методика подсчёта открытых файлов
- Примеры получения данных
- База знаний
- Linux увеличить количество одновременно открытых файлов
- Связанные статьи
Идентификация открытых файлов и сетевых подключений в 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’ы =)
Источник
Русские Блоги
Количество процессов и дескрипторов linux
Примечание: версия Linux CentOS7
оглавление
Единая концепция обработки и управления
Программа может открывать несколько объектов, а именно процессов;
Во время работы процесс будет открывать множество ресурсов, включая файл файла, сокет коммуникационного соединения, порт прослушивания и т. Д. Мы называем их коллективными дескрипторами. Все в Linux является файлом, поэтому, когда процесс открывает количество дескрипторов При превышении системного лимита мы получим предупреждение: слишком много открытых файлов.
Во-вторых, ограничения ресурсов Linux
1. Ограничения пользовательских ресурсов
В Bash есть команда ulimit, которая обеспечивает управление доступными ресурсами оболочки и процессами, запускаемыми оболочкой. В основном это количество открытых файловых дескрипторов, максимальное количество процессов пользователя, размер файла coredump и т. Д.
Конфигурацию ограничений ресурсов можно настроить в файле подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/. Система сначала загружает limits.conf, а затем загружает каталог limits.d в алфавитном порядке. После загрузки файла конфигурации он перезапишет предыдущую конфигурацию. Формат конфигурации следующий:
soft — значение предупреждения, hard — максимальное значение, * означает соответствие всем пользователям
Просмотр ограничений пользовательских ресурсов для входа в текущую оболочку
2. ограничение ресурса обслуживания
Мы всегда упоминали оболочку выше, поэтому для тех пользователей, которые не вошли в систему через аутентификацию PAM, таких как mysql, nginx и т. Д., Вышеуказанная конфигурация не эффективна;
Поскольку в системе CentOS 7 / RHEL 7 вместо предыдущего SysV используется Systemd, область конфигурации файла /etc/security/limits.conf сокращается. Конфигурация в limits.conf применима только для аутентификации PAM. Ограничение ресурсов вошедшего в систему пользователя, оно не влияет на ограничение ресурсов службы systemd.
Его нужно настроить с помощью файлов /etc/systemd/system.conf и /etc/systemd/user.conf. Точно так же все файлы .conf в двух соответствующих каталогах /etc/systemd/system.conf.d/* .conf и /etc/systemd/user.conf.d/*.conf.
Среди них system.conf используется экземплярами системы, а user.conf — экземплярами пользователей. Для общих служб используйте конфигурацию в system.conf. Конфигурация в system.conf.d / *. Conf переопределит system.conf.
Формат конфигурации следующий:
= Тип ресурса слева, размер справа
Просмотр лимита ресурсов службы
Например, проверьте влияние конфигурации службы nginx:
3. Лимит системных ресурсов
Для пользователя и службы ранее были выделены ресурсы, но каково общее количество ресурсов в системе? Сюда входят параметры ядра. Существует много параметров ядра. Нам нужно только знать, как изменить наиболее часто используемые, такие как количество процессов и количество дескрипторов.
Три, количество процессов ограничено
1. Ограничьте количество пользовательских процессов.
По умолчанию в /etc/security/limits.d/ есть файл подконфигурации 20-nproc.conf, который используется для установки максимального количества процессов для каждого пользователя.
Проверка /etc/security/limits.d/20-nproc.conf обнаружит, что пользователь root по умолчанию не ограничен, а максимальное количество обычных пользовательских процессов составляет 4096
Фактически, root и обычные пользователи по умолчанию используют значение # cat / proc / sys / kernel / threads-max / 2, что составляет половину количества системных потоков.
Установите максимальное количество процессов на пользователя
Примечание. Изменение файла конфигурации не повлияет на ограничение процесса для текущего пользователя, вошедшего в систему.
2. Лимит процесса обслуживания
Примечание: изменение файла конфигурации не изменит ограничение на количество процессов запущенной в данный момент службы, и ее необходимо перезапустить.
3. Общее количество процессов в системе.
Выше мы установили максимальное количество процессов, которые может открыть каждый пользователь, но это не контролирует общее количество процессов в системе (kernel.pid_max). Предполагая, что kernel.pid_max = 1000, максимальное количество пользовательских процессов пользователя, независимо от того, насколько велико заданное значение, Максимальное количество процессов, которые можно открыть, по-прежнему составляет 1000
Просмотрите глобальный метод pid_max:
Временно измените этот метод значения:
Следовательно, после завершения вышеуказанных операций значение максимального числа пользовательских процессов изменяется правильно.
Вышеуказанное действует только временно, оно будет недействительным после перезапуска машины, постоянный эффективный метод:
Добавьте kernel.pid_max = 65535 в /etc/sysctl.conf
Затем перезапустите машину.
В-четвертых, ограничение количества ручек
1. Ограничьте количество пользовательских дескрипторов
Лимит пользователя для входа, как упоминалось выше, можно настроить с помощью файла подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/ следующим образом:
Примечание: изменение файла конфигурации не повлияет на ограничение дескриптора текущего пользователя, вошедшего в систему.
2. Предел обработки обслуживания
Примечание. Изменение файла конфигурации не приведет к изменению ограничения дескриптора запущенной в данный момент службы.
3. Общее количество системных дескрипторов.
Количество процессов, которые могут быть открыты каждым пользователем, и количество дескрипторов, которые могут быть открыты каждым процессом, указаны выше; есть также файл, который устанавливает общее количество дескрипторов, которые могут быть открыты всеми процессами в системе, то есть этот параметр является системным.
Измените максимальное количество системных дескрипторов, метод следующий (действителен после настройки):
Просмотрите общее количество дескрипторов, используемых в настоящее время в системе:
Источник
Вики IT-KB
Пошаговые руководства, шпаргалки, полезные ссылки.
Инструменты пользователя
Инструменты сайта
Боковая панель
Содержание
Как проверить все открытые файлы пользователем или процессом в Linux
В некоторых ситуациях на Linux могут возникать ошибки, связанные с превышением лимита использования файловых дескрипторов. Эти лимиты накладываются как самим ядром Linux, так и его программными модулями, например PAM.
Лимит ядра Linux
Узнать текущее значение максимального количества файловых дескрипторов, определяемое ядром Linux можно командой:
Этот лимит может быть изменён без перезагрузки системы (начинает действовать сразу и действует до перезагрузки):
Чтобы требуемое значение использовалось постоянно, то есть действовало и после перезагрузки, его необходимо определить в конфиг.файле /etc/sysclt.conf :
Методика подсчёта открытых файлов
Для получения информации о количестве всех открытых файлов всеми процессами в Linux некоторые «знатоки» предлагают использовать команду типа
Однако такая команда показывает гораздо большее значение, чем всего открыто файлов в системе на данный момент на самом деле. Это связано с тем, что по несколько раз в подсчёт попадают одни и теже открытые файлы, используемые разными процессами.
Поэтому проще для получения общего числа открытых файлов использовать данные ядра Linux
Первое число — общее количество занятых/используемых на данный момент времени файловых дескрипторов.
Второе число — количество выделенных процессам, но не используемых в данный момент дескрипторов.
Третье число — максимальное количество открытых дескрипторов
Примеры получения данных
Получить список TOP-20 процессов с самым большим количеством открытых файловых дескрипторов:
Подсчитать количество открытых файлов в разрезе процессов (в первой колонке будет выведен PID процесса, во второй количество открытых файлов этим процессом):
Посмотреть открытые файловые дескрипторы во всех процессах для отдельно взятого пользователя, например «apache»
Подсчитать количество открытых файлов в каждом процессе для отдельно взятого пользователя:
Тоже самое, только в реальном режиме времени:
Посмотреть открыте файловые дескриптры для отдельно взятого процесса (по PID процесса):
Подсчитать количество файловых дескриптров для отдельно взятого процесса:
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Версия ОС |
---|
Debian GNU/Linux 8.10 (jessie) |
Автор первичной редакции:
Алексей Максимов
Время публикации: 09.06.2018 11:18
Источник
База знаний
Linux увеличить количество одновременно открытых файлов
Количество файловых дескрипторов в системе ограничивает количество одновременно открытых файлов. В большинстве linux дистрибутивов это значение равно 1024 на одного юзера. В большинстве случаев этого хватает, но бывают и исключения. Обычно это высоко нагруженные серверы прокси или баз данных.
Проверить существующие в операционке лимиты вы можете так:
ulimit -Hn
и
ulimit -Sn
Если ваш Squid вдруг повис и заругался в лог примерно так
WARNING! Your cache is running out of filedescriptors
то это повод задуматься об увеличении ограничения в 1024 дескриптора.
MySQL в таком случае говорит
OS error code 24: Too many open files
Количество дескрипторов выставляется в следующих конфигурационных файлах:
/etc/security/limits.conf
Можно выставить лимиты для отдельного юзера
proxy soft nofile 4096
proxy hard nofile 10240
В строке по порядку через пробел идут следующие значения: [юзер] [тип ограничения] Nofile [число]
Можно увеличить сразу для всех
* — nofile 4096
Так же идём в файл /etc/sysctl.conf и прописываем в него такую строчку
fs.file-max = 100000
Сохраняемся и перелогиниваемся, возможно нужно будет и перезагрузиться.
Теперь можно проверить как поживает squid.
squidclient mgr:info | grep ‘file descri’
В общем виде команда выглядит так
squidclient -p <порт прокси>-u <юзер прокси>-w ‘<пароль>’ mgr:info | grep ‘file descri’
Как вариант проверьте значение дочерних процессов в конфиге squid и размер кеша. Возможно в вашем случае вариантом будет не много пожертвовать производительностью в угоду стабильности.
В зависимости от версии squid в его конфигурации так же есть параметры, отвечающие за количество дескрипторов, это max_filedesc и SQUID_MAXFD.
- 3 Пользователи нашли это полезным
Связанные статьи
Для установки SSL сертификата на Nginx Вам необходимо:1. Скопировать файлы сертификата на.
Для установки SSL сертификата на Apache вам следует:1. Скопировать файлы SSL сертификата на.
Веб-сервер Apache полностью поддерживает работу по HTTPS. Для того, чтобы активировать.
Бывает так что в почта на сервере не отправляеться и не принимает, в письмах оутлупа ошибка.
Для мониторинга дисков под Adaptec AACRaid контролером можно использовать бесплатную утилиту.
Источник