Ограничение nofile не изменено для команды sh в неинтерактивном сеансе
Запуск 12.04.3 LTS
Пользователь, отправляющий пакетное задание в очередь, получал
'too many open files error'
Расследование предложило изменить /etc/security/limits.conf
файл, который был сделан как для всех пользователей, так и для пользователя root, с жесткими ограничениями 65536. ulimit -a
возвращает предел 65536. Также /etc/pam.d/ common-session
, common-session-noninteractive
, файлы login и ssh имеют все необходимые строки pam_limits.so
добавлено.
Проблема сохраняется и можно увидеть, глядя на /proc/pid/limits
файл для процессов, перечисленных с помощью lsof
, Здесь nofile
предел для процессов, перечисленных как sh под командой, остается как мягкий предел 1024 и жесткий предел 4096, которые были исходными настройками системы по умолчанию. Ограничения для других процессов, например, с командой grep
, изменились на новый предел 65536.
Как написано, для запуска сценария требуется короткий пакет из большого количества открытых файлов, из которых отдельные записи собираются и переносятся в другой составной файл. Ошибка всегда происходит в 512-м файле, который, кажется, указывает, что он сталкивается с пределом.
Что нужно изменить, чтобы увеличить пределы для команд, попадающих в sh?