Поиск по сайту:

Как установить значение ulimit навсегда


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

Узнайте, как установить постоянное значение ulimit в Linux.

Uпредельное значение

Ulimit обеспечивает предопределенный предел того, сколько ресурсов может использовать пользователь. Инструмент использует определенный файл конфигурации в качестве ядра для назначения значений ulimit. Для более тонкой настройки лучше отредактировать файл.

$ cat /etc/security/limits.conf

Существует два типа ограничений: мягкие и жесткие. Объяснить эти типы лучше на простом примере.

Допустим, системный администратор хотел бы, чтобы определенный пользователь навел курсор на определенное значение. Здесь пользователь может превысить значение, если это необходимо, но не привязываться к нему жестко. В этом случае это будет мягкое ограничение. С другой стороны, если администратор хочет строго установить ограничение, это будет жесткое ограничение.

Использование ulimit

Ulimit — это инструмент командной строки. Вот основная структура команды ulimit.

$ ulimit <options>

Показать все лимиты

Флаг «-a» перечислит все параметры и конфигурации для конкретного пользователя. Если пользователь не определен, вместо этого будут напечатаны ограничения для текущего пользователя.

$ ulimit -a

$ ulimit -a <username>

Чтобы отобразить мягкие ограничения пользователя, используйте флаг «-S».

$ ulimit -Sa <username>

Чтобы отобразить жесткие ограничения пользователя, используйте флаг «-H».

$ ulimit -Ha <username>

Можно увидеть пределы определенного процесса. Подробности находятся в следующем файле. Обратите внимание, что это уникальный файл для каждого из запущенных в данный момент процессов. Замените поле PID на PID целевого процесса.

$ cat /proc/<PID>/limits

Ограничение параметров

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

  • b: размер буфера сокета

  • c: Размер создаваемых файлов ядра

  • d: Размер сегмента данных процесса

  • e: приоритет планирования (значение «хороший»)

  • f: количество файлов, созданных оболочкой

  • i: количество ожидающих сигналов

  • l: Размер для блокировки в памяти

  • m: размер резидентного набора

  • n: количество дескрипторов открытых файлов.

  • p: Размер буфера канала

  • q: количество байтов в очередях сообщений POSIX.

  • r: приоритет планирования в реальном времени

  • s: размер стека

  • t: процессорное время (в секундах)

  • T: количество потоков

  • u: количество процессов, доступных пользователю

  • v: объем виртуальной памяти, доступный для обработки.

  • x: количество блокировок файлов

Временно изменить значение ulimit

Можно временно изменить значение ulimit для конкретного пользователя. Изменение будет действовать до тех пор, пока пользователь не выйдет из системы, не истечет срок действия сеанса или система не перезагрузится. Здесь я покажу пример того, как установить максимальное число процессов для пользователя.

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

$ ulimit -u

$ ulimit -u 12345

Проверьте жесткий предел, чтобы проверить.

$ ulimit -Hu

Изменить значение ulimit навсегда

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

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

$ sudo vim /etc/security/limits.conf

Здесь записи файла имеют следующую структуру.

$ <domain> <type> <item> <value>

Давайте кратко разберем каждое из полей.

  • домен: имена пользователей, группы, диапазоны GUID и т. д.

  • type: Тип лимита (мягкий/жесткий)

  • item: Ресурс, который будет ограничен, например, размер ядра, nproc, размер файла и т. д.

  • значение: предельное значение

Вот краткий список всех доступных предметов.

  • core: ограничивает размер основного файла (в КБ)

  • cpu: процессорное время (в мин.)

  • данные: размер данных (в КБ)

  • fsize: Размер файла (в КБ)

  • locks: Блокировки файлов, которые пользователь может удерживать

  • memlock: заблокированное в памяти адресное пространство (в КБ)

  • nproc: количество процессоров

  • rtpio: приоритет в реальном времени

  • sigpending: Количество ожидающих сигналов

Полный список доступных элементов см. на справочной странице limit.conf.

$ man limits.conf

Например, следующая запись ограничит количество ядер ЦП, которые пользователь «Виктор» может использовать, до 2.

$ viktor hard nproc 2

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

Последние мысли

Инструмент ulimit предлагает мощный способ управления ресурсами. Это просто, но мощно в том, что он делает. Что бы вы ни делали, убедитесь, что ограничение, которое вы собираетесь внедрить, введено правильно. Если вы пробуете эти вещи в первый раз, попробуйте сначала протестировать их на виртуальной машине.

В команде ulimit есть нечто большее, чем то, что я здесь обсуждал. Если вы хотите узнать больше, ознакомьтесь с командой Linux ulimit.

Удачных вычислений!

Статьи по данной тематике: