Невозможно увеличить лимит открытого файла за 4096 (Ubuntu)

16908
mkasberg

Я на Ubuntu 17.04. Попытка увеличить лимит открытого файла, и ни одна из инструкций, которые я нашел в Интернете, не работает. Я могу подняться до 4096, но не могу пройти мимо этого.

$ ulimit -n 1024 $ ulimit -n 4096 $ ulimit -n 4096 

Это работает. Это не:

$ ulimit -n 4097 bash: ulimit: open files: cannot modify limit: Operation not permitted 

Похоже, из-за жесткого ограничения:

$ ulimit -Hn 4096 

Я попытался добавить эти строки в /etc/security/limits.conf:

* hard nofile 65535 * soft nofile 65535 root soft nofile 65535 root hard nofile 65535 

Также добавили эту строку в /etc/pam.d/common-session и /etc/pam.d/common-session-noninteractive:

session required pam_limits.so 

После этого я перезагрузил компьютер. Изменения в limit.conf, похоже, ни на что не влияют. Жесткий предел все еще остается на уровне 4096, что не позволяет мне идти выше. Как мне увеличить лимит открытых файлов?


Вот дополнительная информация о конфигурации:

$ cat /proc/sys/fs/file-max  1624668 
19

3 ответа на вопрос

31
mkasberg

Хорошо, я наконец понял это. Ограничения, которые я устанавливал в /etc/security/limits.conf, применялись, но они не применялись для графического входа в систему. Это можно проверить следующим образом из окна терминала:

$ ulimit -n 4096 $ su mkasberg Password: $ ulimit -n 65535 

Дополнительные исследования привели меня к этому отчету об ошибках, который указал мне правильное направление. Чтобы изменить ограничение, используемое оболочкой входа в систему, нам нужно добавить следующую строку в /etc/systemd/user.conf:

DefaultLimitNOFILE=65535 

Это изменение работает, но влияет только на мягкое ограничение. (Оставляя нас ограниченным жестким лимитом 4096). Чтобы повлиять и на жесткий лимит, мы должны изменить /etc/systemd/system.conf с тем же изменением.

Изменения, которые я сделал в /etc/pam.d, не были необходимы. По крайней мере, в Ubuntu это уже работает. Кроме того, не было необходимости изменять настройки для rootи *в limit.conf. Изменение пределов mkasbergбыло достаточно, по крайней мере, для моего случая использования.


В итоге

Если вы хотите увеличить лимит, показанный на ulimit -n, вы должны:

  • Измените /etc/systemd/user.conf и /etc/systemd/system.conf следующей строкой (это заботится о графическом входе в систему):

    DefaultLimitNOFILE=65535 
  • Измените /etc/security/limits.conf со следующими строками (это учитывает вход в систему без GUI):

    mkasberg hard nofile 65535 mkasberg soft nofile 65535 
`DefaultLimitNOFILE = 65535` добились цели. Но почему `/etc/security/limits.conf` не работает? Suvitruf 6 лет назад 1
Вход в GUI использует systemd, который, очевидно, имеет свою собственную конфигурацию (`/ etc / systemd / system.conf`), которая не зависит от обычной конфигурации для сеансов терминала (` / etc / security / limit.conf`). Я не знаю достаточно о systemd, чтобы понять, почему он был реализован таким образом. mkasberg 6 лет назад 1
Спасибо! Часы искали и пробовали все, но это решило проблему. Roger Collins 6 лет назад 0
@Suvitruf, потому что он игнорируется в * systemd * системе. Я отправляю ответ. Marc.2377 6 лет назад 0
3
Marc.2377

Не нужно ничего менять в /etc/security/limits.confфайле, это игнорируется, если вы используете systemd.

(Воспроизведение измененного ответа на другой вопрос в сети ...)

Альтернатива для тех, кто предпочитает не изменять значение по умолчанию /etc/systemd/system.confи /etc/systemd/user/confфайлы:

  1. создайте новый файл /etc/systemd/system.conf.d/limits.confс таким содержанием:

    [Manager] DefaultLimitNOFILE=65535 
  2. запускать systemctl daemon-reexecс правами root

  3. выйти и снова войти

  4. проверьте ваш новый лимит с ulimit -n.

Обратитесь к systemd-system.confстранице справки для деталей.

0
Paresh Chauhan

Используя Ubuntu 17.04, я получил жесткое ограничение:

user@paresh.com:~$ ulimit -Hn 4096 

Я мог бы понизить это, используя ulimit, но не увеличивать это, так как вопрос описывает это. ulimitРуководство описывает:

только root может увеличить жесткий предел.

Поэтому я попытался установить более высокий предел в /etc/security/limits.confследующем виде:

user hard nofile 9999 

и новый логин вроде ssh localhost -l userдал мне новый лимит:

user@paresh.com:~$ ulimit -Hn 9999 

Я надеюсь, что это работает и для вас.