Я пытаюсь увеличить максимальное количество открытых файлов для текущего пользователя
> ulimit -n
1024
Я пытаюсь увеличить и потерпеть неудачу следующим образом
> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
Так что я делаю естественное и пытаюсь запустить с временным разрешением, но не могу
> sudo ulimit -n 4096
sudo: ulimit: command not found
Вопросов
- Как увеличить ulimit?
- Почему это происходит?
Использование Fedora 14
ulimit 4096
не работает. Я думаю, что-n
это правильно. В качестве доказательства концепции это работает, если я сначалаsudo su - root
(но только изменения для корня).Ответы:
ulimit
это встроенная оболочка, а не внешняя команда. Его нужно встроить, потому что он действует на сам процесс оболочки, напримерcd
: ограничения, как и текущий каталог, являются свойством этого конкретного процесса.sudo bash -c 'ulimit -n 4096'
будет работать, но это изменит ограничение для процесса bash, вызываемогоsudo
только, что не поможет вам.Есть два значения для каждого предела: жесткий предел и мягкий предел. Только root может поднять жесткий лимит; любой может снизить жесткий предел, и мягкий предел может быть изменен в любом направлении с единственным ограничением, которое не может быть выше жесткого ограничения. Мягкий предел - это фактическое значение, которое имеет значение.
Поэтому вам нужно организовать, чтобы все ваши процессы имели жесткое ограничение на количество открытых файлов не менее 4096. Можно установить мягкое ограничение на 1024. Прежде чем запускать этот процесс, требующий большого количества файлов, увеличьте мягкое ограничение. В
/etc/security/limits.conf
добавьте строкигде
paislee
имя пользователя, от имени которого вы хотите запустить процесс. В оболочке, которая запускает процесс, для которого вы хотите более высокий предел, запуститеподнять мягкий предел до жесткого ограничения.
источник
sudo bash -c
- запускsudo -i
оболочки входа иsudo -s
запуск оболочки. Применяются те же ограничения, но это может быть полезно в других обстоятельствах.sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"
. Но и то,ulimit -c 1024
и другоеexec su $LOGNAME"
влияет только на созданную оболочкуsudo
, так какова цель команды?exec su $LOGNAME"
также не делает ничего значимого, чтобы использовать измененный лимит. Я очень смущен и думаю, что я что-то упускаю.ulimit -Sn unlimited
не работает на большинстве оболочек. Правильный метод - вызвать,ulimit -a
а затем вызвать,ulimit -n <number>
где <номер - это жесткий предел (правый столбец).откройте файл
/etc/security/limits.conf
и добавьте строку<user> soft nofile <value>
. за использованиеulimit
изменений для пользователя root и попробуйте то же самое.источник