В Linux каждый процесс потребляет ресурсы: память, количество открытых файлов, размер стека и прочее. Чтобы предотвратить вылет системы или несанкционированное потребление ресурсов, используется команда
ulimit.🌟 Что такое ulimit?
ulimit - это встроенная команда оболочки, которая позволяет устанавливать ограничения на использование ресурсов для текущего сеанса оболочки и всех дочерних процессов.
🌟 Что можно ограничить? Команда
ulimit -a покажет текущие лимиты:
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 1024
max user processes (-u) 15635
🌟 Часто используемые лимиты
Параметр Назначение
-n Количество открытых файлов (очень важно для веб-серверов и баз данных)
-u Кол-во пользовательских процессов
-f Максимальный размер создаваемого файла
-v Максимальный объём виртуальной памяти
-s Размер стека
-t Максимальное время CPU, сек
▪️ Примеры использования
📍 Увеличить лимит открытых файлов:
ulimit -n 65535
📍 Ограничить процесс в использовании CPU временем:
ulimit -t 60
(После 60 секунд использования CPU - процесс будет убит)
📍 Запретить создание файлов > 10 МБ:
ulimit -f $((10 * 1024)) # 10 МБ в блоках по 1K
▪️ Мягкие и жёсткие лимиты
Мягкий лимит - может быть изменён пользователем в рамках жёсткого
Жёсткий лимит - верхняя граница, меняется только от root
📍 Посмотреть:
ulimit -Sn # soft
ulimit -Hn # hard
📍 Установить:
ulimit -Sn 4096
ulimit -Hn 65535
📍 Постоянные настройки. Чтобы лимиты сохранялись после перезагрузки:
/etc/security/limits.conf:
youruser hard nofile 65535
youruser soft nofile 65535
Убедитесь, что PAM обрабатывает лимиты:
/etc/pam.d/common-session
Добавьте:
session required pam_limits.so
⭐️ Когда пригодится?
Высоконагруженные сервисы (nginx, PostgreSQL, Elasticsearch)
CI/CD-сборки, которые могут упереться в лимит памяти или процессов
Безопасность: ограничение прав скриптов или сторонних процессов
BashTex 📱 #linux #utils