Назад | Перейти на главную страницу

Установите лимит «открытых файлов» в Linux для каждого пользователя. Невозможно установить более 1024

Я пытаюсь увеличить лимит открытых файлов для определенного пользователя в CentOS 5.5 Linux. Я добавил новую строку в /etc/security/limits.conf:

seed     hard    nofile          10240

Затем сделайте тест:

runuser -s /bin/bash - seed -c "ulimit -S -c 0>/dev/null 2>&1; ulimit -a"
0
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8185
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

И, как видите, ограничение на количество открытых файлов по-прежнему равно 1024. Если я установлю ограничение на 1000, оно будет применено. Итак, я не могу установить ограничение больше 1024.

Как мне это сделать?? Мне нужно настроить параметры только для 1 пользователя, а не для всей системы.

Я подозреваю runuser не проходит процесс «входа в систему» ​​PAM, который применяет limits.conf, или, возможно, pam_limits.so отключен. По крайней мере, в Debian /etc/pam.d/su закомментирован pam_limits.so, поэтому ограничения наследуются от пользователя, выполняющего su.

Чтобы увеличить лимит открытых файлов для определенного пользователя в CentOS 5.5 Linux:

1 - в файле '/etc/security/limits.conf' добавить: - http://gerardnico.com/wiki/linux/limits.conf

...
# seed osuser - extended max number of open files
seed    hard    nofile    10240

# End of file

2 - в файле '/ etc / profile'или в'/home/seed/.bash_profile' Добавить:

if [ $USER = "seed" ]; then
        ulimit -n 10240
fi

Используя "ulimit -a", вы увидите мягкое ограничение, 1024 в redhat 5.8 является мягким пределом по умолчанию.

vim /etc/security/limits.conf
user01  soft    nofile  1024
user01  hard    nofile  2048

ulimit -Sn
1024
ulimit -Hn
2048

чтение

grep "Max open files" /proc/$$/limits
Max open files            1024                 2048                 files

В системах Linux есть три места, где устанавливаются ограничения для файлов, каждое независимо от другого:

  1. ядро, как в / proc / sys / fs / file-max, управляется через sysctl fs.filemax или /etc/sysctl.conf

  2. ulimit в оболочке, как контролируется ulimit -n

  3. PAM, как установлено через /etc/security/limits.conf

Число, которое имеет приоритет и фактически определяет ограничение для ваших процессов, - это НАИМЕНЕЕ из трех указанных выше.