Важно знать, что существуют два вида ограничений:
- Жесткий предел настраивается только корень. Это максимально возможное значение (предел) для мягкого ограничения.
- Мягкий предел может быть установлен обычным пользователем. Это фактический предел в силе.
Решение для одного сеанса
В оболочке установлен мягкий предел:
ulimit -Sn 2048
В этом примере фактическое ограничение будет увеличено до 2048, но команда будет выполнена успешно, только если жесткий предел (check ulimit -Hn
:) такой же или выше. Если вам нужны более высокие значения, увеличьте жесткий предел одним из следующих способов. Ограничения устанавливаются для каждого процесса, и они наследуются вновь порожденными процессами, поэтому все, что вы запускаете после этой команды в той же оболочке, будет иметь новые ограничения.
Изменение жесткого лимита за один сеанс
Это нелегко, потому что только root может изменить жесткое ограничение, и после переключения на root вы должны вернуться к первоначальному пользователю. Вот решение с sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Общесистемное решение
В Debian и многих других системах, которые pam_limits
вы используете, вы можете устанавливать системные ограничения /etc/security/limits.conf
в файлах и в файлах /etc/security/limits.d
. Файл conf содержит описание. Пример строки:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Это установит жесткое ограничение и мягкое ограничение по умолчанию для пользователей в группе webadmins
после входа в систему.
Другие ограничения
Значение жесткого предела ограничено глобальным пределом значения дескрипторов открытых файлов, /proc/sys/fs/file-max
который по умолчанию довольно высок в современных дистрибутивах Linux. Это значение ограничено NR_OPEN
значением, используемым во время компиляции ядра.
Нет ли лучшего решения?
Может быть, вы могли бы проверить , действительно ли все *log
файлы, которые вы передаете, tail -f
являются действительно активными файлами, которые необходимо отслеживать. Возможно, что некоторые из них уже закрыты для регистрации, и вы можете просто открыть меньшее количество файлов.