Как различные значения ulimit для набора процессов?

Как различны ulimit значения для набора процессов? Меня особенно интересует количество дескрипторов открытых файлов. Как это установить для данного процесса? Если он основан на пользователе, который запустил процесс, то как он установлен для пользователя?

Как я могу установить эти ограничения для конкретного пользователя?

2 ответа

Решение

Если вы не изменили значение какого-либо ресурса, показанного ulimit, он будет использовать значение по умолчанию, которое вы видите при запуске встроенной оболочки ulimit -a, Обратите внимание, что системный вызов, вовлеченный в получение значения getrlimit(2),

Опять же, если вам нужно изменить значение, которое нужно использовать setrlimit(2) системный вызов, ulimit делает именно это, устанавливая новый лимит ресурсов для процессов.

Ограничения ресурса показаны в ulimit применяются к отдельным процессам, а не к пользователям.

Чтобы установить новое значение числа дескрипторов открытых файлов (по умолчанию 1024) на процесс, вы можете использовать:

ulimit -n 512

Обратите внимание, что вы можете проверить жесткие и мягкие ограничения с помощью ulimit -Hn а также ulimit -Sn соответственно. Вы можете уменьшить любое значение и увеличить его до жесткого предела.

Чтобы увеличить предел сверх текущего жесткого предела (1024), вам нужно быть пользователем root.

Обратите внимание, что вы не можете увеличить значение выше указанного ядром максимума.

Сейчас есть файл /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).
Другие вопросы по тегам