Как проверить, применяются ли настройки ulimit в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, правильно ли применены настройки ulimit в Linux. Вы изучите различные методы проверки ограничений ресурсов, начиная с отображения текущих ограничений оболочки (shell) с помощью команды ulimit -a.

Затем вы рассмотрите системный файл конфигурации /etc/security/limits.conf, чтобы понять, как устанавливаются ограничения для пользователей и групп. Наконец, вы научитесь проверять фактические ограничения, примененные к запущенному процессу, путем изучения его записи в каталоге /proc. Этот практический подход позволит вам全面но понять, как работают ограничения ресурсов и как решать связанные с ними проблемы в среде Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558811{{"Как проверить, применяются ли настройки ulimit в Linux"}} linux/help -.-> lab-558811{{"Как проверить, применяются ли настройки ulimit в Linux"}} linux/cat -.-> lab-558811{{"Как проверить, применяются ли настройки ulimit в Linux"}} linux/env -.-> lab-558811{{"Как проверить, применяются ли настройки ulimit в Linux"}} end

Отображение ограничений с помощью команды ulimit -a

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

Команда ulimit позволяет вам просматривать и настраивать эти ограничения для текущей сессии оболочки (shell) и любых процессов, запускаемых из нее.

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

ulimit -a

Нажмите Enter.

Вы увидите вывод, похожий на следующий:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) <placeholder>
max locked memory       (kbytes, -l) <placeholder>
max memory size         (kbytes, -m) unlimited
open files                      (-n) <placeholder>
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) <placeholder>
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) <placeholder>
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Вывод показывает различные ограничения ресурсов, такие как максимальное количество открытых файлов (-n), максимальное количество пользовательских процессов (-u) и максимальный размер стека (-s). Значение unlimited означает, что для этого ресурса не установлено жесткого ограничения.

Понимание этих ограничений является важным для диагностики проблем с производительностью или неожиданного поведения программы. Например, если программа завершается с ошибкой, потому что не может открыть достаточно файлов, проверка ограничения open files с помощью команды ulimit -a будет хорошим первым шагом.

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

ulimit -n

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

Попробуйте использовать команду ulimit -a в своем терминале. Изучите различные типы отображаемых ограничений.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка конфигурации ограничений с помощью команды cat /etc/security/limits.conf

На предыдущем этапе вы использовали команду ulimit -a для просмотра текущих ограничений ресурсов для вашей сессии оболочки (shell). Эти ограничения часто настраиваются на уровне системы в файле /etc/security/limits.conf.

Этот файл является частью фреймворка Pluggable Authentication Modules (PAM, модули подключаемой аутентификации) и позволяет администраторам устанавливать ограничения ресурсов для пользователей и групп при входе в систему.

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

Откройте терминал и введите следующую команду:

cat /etc/security/limits.conf

Нажмите Enter.

Вы увидите содержимое файла limits.conf. Вывод будет выглядеть приблизительно так (комментарии и конкретные записи могут отличаться):

## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#

#*               soft    core            0
#root            hard    core            unlimited
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           unlimited
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

В этом файле используется простой формат:

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

  • <domain>: Определяет пользователя или группу, к которой применяется ограничение. Это может быть имя пользователя, имя группы (предваряемое символом @) или * для всех пользователей.
  • <type>: Может быть soft или hard.
    • soft-ограничения - это текущие ограничения, которые пользователь может увеличить (до уровня hard-ограничения).
    • hard-ограничения - это максимальные ограничения, которые обычный (не-root) пользователь не может превысить.
  • <item>: Ресурс, для которого устанавливается ограничение (например, nproc для количества процессов, nofile для количества открытых файлов).
  • <value>: Значение ограничения.

Строки, начинающиеся с символа #, являются комментариями и игнорируются.

Обратите внимание на строку ## (it is recommended to use #include files from /etc/security/limits.d/). Это означает, что системно-специфические или приложение-специфические ограничения часто размещаются в отдельных файлах в каталоге /etc/security/limits.d/. Это помогает поддерживать чистоту и структуру основного файла limits.conf.

В рамках этого практического занятия (лабораторной работы) вы не будете изменять этот файл, но понимание его структуры и назначения важно для системного администрирования. Ограничения, которые вы видели с помощью команды ulimit -a, часто берутся из настроек этого файла и файлов в каталоге limits.d.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка ограничений процесса с помощью команды cat /proc/self/limits

На предыдущих этапах вы узнали о команде ulimit для просмотра текущих ограничений сессии и о файле /etc/security/limits.conf для системной конфигурации. Теперь давайте посмотрим, как запущенный процесс сообщает о своих собственных ограничениях.

Linux предоставляет виртуальную файловую систему /proc, которая содержит информацию о запущенных процессах и системе ядра. Каждый запущенный процесс имеет каталог в /proc, названный по его идентификатору процесса (Process ID, PID).

Специальный каталог /proc/self представляет собой символическую ссылку, которая указывает на каталог /proc процесса, который к нему обращается. Таким образом, когда вы находитесь в терминале и обращаетесь к /proc/self, вы смотрите на информацию о текущем процессе оболочки (shell).

Внутри каталога /proc/self есть файл с именем limits, который содержит ограничения ресурсов для этого конкретного процесса.

Давайте посмотрим на ограничения для текущего процесса оболочки с помощью команды cat:

cat /proc/self/limits

Нажмите Enter.

Вы увидите вывод, похожий на следующий:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       <placeholder>        <placeholder>        signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Этот вывод показывает Soft Limit (мягкое ограничение) и Hard Limit (жесткое ограничение) для каждого ресурса, аналогично тому, что вы видели с помощью команды ulimit -a. Здесь значения отражают фактические ограничения, применяемые к процессу, который выполнил команду cat (ваша оболочка).

Сравните вывод команды cat /proc/self/limits с выводом команды ulimit -a из первого шага. Вы должны увидеть, что значения совпадают, так как команда ulimit -a сообщает о ограничениях текущего процесса оболочки.

Файловая система /proc представляет собой мощный инструмент для изучения состояния вашей Linux-системы и ее процессов. Файл limits в каталоге каждого процесса предоставляет прямой способ проверить ограничения ресурсов, действующие для этого конкретного процесса.

Теперь вы узнали три разных способа взаимодействия с ограничениями ресурсов в Linux: просмотр текущих ограничений сессии с помощью команды ulimit -a, изучение системной конфигурации в файле /etc/security/limits.conf и проверка ограничений для конкретного процесса через /proc/<PID>/limits (или /proc/self/limits).

Нажмите Продолжить, чтобы завершить это практическое занятие (лабораторную работу).

Резюме

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

Затем вы исследовали системный файл конфигурации /etc/security/limits.conf с помощью команды cat. Этот файл определяет стандартные ограничения ресурсов для пользователей и групп, которые применяются при входе в систему. Наконец, вы проверили фактические ограничения ресурсов для запущенного процесса, изучив файл /proc/self/limits, который показывает действующие ограничения для текущего процесса, и продемонстрировали, как проверить ограничения, применяемые к конкретному экземпляру процесса.