Лимиты в Linux

Каждый процесс имеет свои лимиты (потребление памяти, количество одновременно запущенных файлов и прочие).  При запуске процесс читает файл /etc/security/limits.conf на предмет ограничений (просматривается, пользователь/группа и ищется совпадение; если совпадений нет, то используются дефолтные параметры) и запускается с нужными лимитами.
Узнать лимиты у запущенного процесса можно так:

$ cat /proc/{PID}/limits

Пример:

$ cat /proc/20475/limits 
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             63554                63554                processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       63554                63554                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us

Как же налету поменять эти значения? Штатного средства нет, но есть утилита prlimit (а так же можно использовать дополнительно getrlimit, setrlimit) из набора util-linux (находится в подпапке sys-utils). После сборки меняем:

# prlimit  --nofile=10000 --pid 20475
# grep 'Max open files' /proc/20475/limits
Max open files            10000                 10000                 files

Если хотите поменять для текущего сеанса, то можно использовать в качестве pid’a значение $$

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *