Как различные ulimit
значения для процесса установлены? Я особенно интересуюсь количеством открытых дескрипторов файлов. Как это установлено для данного процесса? Если это основано на пользователе, который запустил процесс затем, как это установлено для пользователя?
Как я могу установить эти пределы для конкретного пользователя?
Если Вы не изменили значение никакого ресурса, показанного ulimit
, это использовало бы значение по умолчанию, которое является тем, что Вы видите при выполнении встроенной оболочки ulimit -a
. Обратите внимание, что системный вызов inolved в получении значения getrlimit(2)
.
Снова, если необходимо изменить значение, необходимо использовать setrlimit(2)
системный вызов, ulimit
делает точно это при установлении нового resoure предела для процессов.
Пределы ресурса, показанные в ulimit
применяются на отдельные процессы, не пользователей.
Для устанавливания нового значения для количества открытых дескрипторов файлов (значение по умолчанию 1024) для каждого процесса можно использовать:
ulimit -n 512
Обратите внимание, что можно проверить жесткий предел и мягкие пределы с ulimit -Hn
и ulimit -Sn
соответственно. Можно уменьшиться к любому значению и увеличению до жесткого предела.
Для увеличения предела вне текущего жесткого предела (1024), необходимо быть корнем.
Обратите внимание, что Вы не можете увеличить значение вне указанного максимума ядра.
Теперь существует файл /etc/security/limits.conf
это используется pam
конкретно pam_limits.so
на запуск каждого сеанса пользователя можно установить значения здесь для взятия постоянного эффекта как ulimit
установленные значения только для рабочей сессии.
Хотя необходимо установить значения на этом файле на основе пользователя/группы, пределы применимы на для каждого процесса при том пользователе/группе кроме некоторых объектов как maxsyslogins
, maxlogins
. /etc/security/limits.conf
имеет достаточное описание в файле для запущения Вас.
Также проверьте help ulimit
, man 2 setrlimit
получить больше идеи.
Это - POSIX - см. man 3 sysconf
NAME
sysconf - get configuration information at run time
SYNOPSIS
#include <unistd.h>
long sysconf(int name);
DESCRIPTION
POSIX allows an application to test at compile or run time whether
certain options are supported, or what the value is of certain
configurable constants or limits.
At compile time this is done by including <unistd.h> and/or <limits.h>
and testing the value of certain macros.
At run time, one can ask for numerical values using the present
function sysconf(). One can ask for numerical values that may depend
on the filesystem a file is in using the calls fpathconf(3) and
pathconf(3). One can ask for string values using confstr(3).
The values obtained from these functions are system configuration
constants. They do not change during the lifetime of a process.
...<snip>...
OPEN_MAX - _SC_OPEN_MAX
The maximum number of files that a process can have open at any
time. Must not be less than _POSIX_OPEN_MAX (20).