В чем разница между жесткими и мягкими пределами в ulimit?
Для количества открытых файлов у меня установлен мягкий предел 1024 и жесткий предел 10240. Можно запускать программы, открывающие более 1024 файлов. Для чего нужен мягкий предел?
open-files
ulimit
Даниэль Куллманн
источник
источник
ulimit -n
? Попробуйте запустить оболочку с очень низким значением (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
). Какой выход?Ответы:
Жесткий лимит может быть повышен только пользователем root (любой процесс может его снизить). Так что это полезно для безопасности: процесс без полномочий root не может перешагнуть жесткий предел. Но неудобно, что процесс без полномочий root не может иметь нижний предел, чем его дочерние процессы.
Мягкий предел может быть изменен процессом в любое время. Так что это удобно, пока процессы взаимодействуют, но не годится для безопасности.
Типичный вариант использования мягких ограничений - отключение дампов ядра (
ulimit -Sc 0
), при этом оставляя возможность включить их для конкретного процесса, который вы отлаживаете ((ulimit -Sc unlimited; myprocess)
).Команда
ulimit
shell представляет собой оболочку дляsetrlimit
системного вызова, поэтому здесь вы найдете исчерпывающую документацию.Обратите внимание, что некоторые системы могут не реализовывать все ограничения. В частности, некоторые системы не поддерживают ограничения на процессы для файловых дескрипторов (Linux поддерживает); если у вас нет, команда shell может быть неактивной.
источник
ulimit -m
,RLIMIT_RSS
) является примером ограничения, которое больше не действует в Linux. Ограничение виртуальной памяти (ulimit -v
,RLIMIT_AS
) работает, хотя.setrlimit
(в пределах, разрешенных жестким ограничением, если, конечно, не выполняется от имени root). У большинства программ нет команды, которая позволяет пользователю делать это, но вы можете попробовать подключить программу с помощью отладчика и заставить ее выполнитьsetrlimit
вызов, или в Linux вы можете вызватьprlimit
(для которого я не знаю ни одной оболочки утилита).prlimit
утилита оболочки.Жесткий предел для целей безопасности. Для пользователя без полномочий root он может только уменьшить жесткое ограничение с установленного в настоящее время жесткого ограничения; он не может увеличить это. Увеличение жесткого ограничения может быть сделано только пользователем root (или, возможно, с привилегией sudo, не уверенным в этом). Пользователь, не являющийся пользователем root, может выбрать для своих процессов лимит (называемый мягким лимитом), который может находиться в диапазоне [0, жесткий лимит]. Это мягкий предел, который рассматривается и учитывается процессами.
источник