Ubuntu Linux ulimit
Введение | |
Одновременные процессы | |
Количество открытых файлов | |
Узнать максимум | |
Статьи про Ubuntu |
Введение
ulimit - это встроенная команда оболочки, используемая для отображения и установки различных ограничений на использование ресурсов для оболочки.
Среди ограничений, которые можно установить, вы найдете максимальный размер файла, максимальный размер основного файла, максимальный размер резидентной памяти.
Хотя ограничения не зависят от оболочки, точный синтаксис зависит от того, какую оболочку вы используете.
Рекомендуется установить некоторые из этих ограничений, чтобы, например, не допустить, чтобы неисправный сценарий оболочки запускал неограниченное количество копий самого себя или чтобы пользователи в системе не запускали процессы, которые выполняются вечно.
nproc
Часто нужно запустить много процессов одновременно.
Например для
нагрузочного тестирования
Посмотреть сколько процессов (nproc) используется пользователем можно командой
ps -lfu $(whoami) | wc -l
Например:
ps -lfu root | wc -l
266
ps -lfu andrei | wc -l
8
Предельные значения можно узнать выполнив
ulimit -a
-t: cpu time (seconds) unlimited -f: file size (blocks) unlimited -d: data seg size (kbytes) unlimited -s: stack size (kbytes) 8192 -c: core file size (blocks) 0 -m: resident set size (kbytes) unlimited -u: processes 126675 -n: file descriptors 1024 -l: locked-in-memory size (kbytes) 65536 -v: address space (kbytes) unlimited -x: file locks unlimited -i: pending signals 126675 -q: bytes in POSIX msg queues 819200 -e: max nice 0 -r: max rt priority 0 -N 15: unlimited
Можно попробовать изменить лимит отредактировав файл limits.conf
sudo vi /etc/security/limits.conf
# /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> # #Where: #<domain> can be: # - a user name # - a group name, with @group syntax # - the wildcard *, for default entry # - the wildcard %, can be also used with %group syntax, # for maxlogin limit # - NOTE: group and wildcard limits are not applied to root. # To apply a limit to the root user, <domain> must be # the literal username root. # #<type> can have the two values: # - "soft" for enforcing the soft limits # - "hard" for enforcing hard limits # #<item> can be one of the following: # - core - limits the core file size (KB) # - data - max data size (KB) # - fsize - maximum filesize (KB) # - memlock - max locked-in-memory address space (KB) # - nofile - max number of open file descriptors # - rss - max resident set size (KB) # - stack - max stack size (KB) # - cpu - max CPU time (MIN) # - nproc - max number of processes # - as - address space limit (KB) # - maxlogins - max number of logins for this user # - maxsyslogins - max number of logins on the system # - priority - the priority to run user process with # - locks - max number of file locks the user can hold # - sigpending - max number of pending signals # - msgqueue - max memory used by POSIX message queues (bytes) # - nice - max nice priority allowed to raise to values: [-20, 19] # - rtprio - max realtime priority # - chroot - change root to directory (Debian-specific) # #<domain> <type> <item> <value> # #* soft core 0 #root hard core 100000 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #ftp - chroot /ftp #@student - maxlogins 4 # End of file
nofile
Увеличить лимит на число открытых файлов можно аналогичным способом
sudo cat /etc/systemd/system.conf | grep DefaultLimitNOFILE
#DefaultLimitNOFILE=1024:524288
Измените на нужно вам значение
Перезайдите в терминал
ulimit -a
-t: cpu time (seconds) unlimited -f: file size (blocks) unlimited -d: data seg size (kbytes) unlimited -s: stack size (kbytes) 8192 -c: core file size (blocks) 0 -m: resident set size (kbytes) unlimited -u: processes 126675 -n: file descriptors 1024 -l: locked-in-memory size (kbytes) 65536 -v: address space (kbytes) unlimited -x: file locks unlimited -i: pending signals 126675 -q: bytes in POSIX msg queues 819200 -e: max nice 0 -r: max rt priority 0 -N 15: unlimited
Про все возможные опции можно узнать выполнив
man limits.conf
Либо прочитав статью limits.conf
Узнать максимум
Узнать максимальный возможный лимит можно выполнив
ulimit -Hn
1048576