Каждый процесс имеет свои лимиты (потребление памяти, количество одновременно запущенных файлов и прочие). При запуске процесс читает файл /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 значение $$