Я случайно увидел, что в моем Ubuntu 12.04 некоторые ресурсы пользователя root ограничены. Я ничего не ограничил явно, и мой limit.conf, что касается пользователя root, пуст. Вот вывод ulimit -a для пользователя root
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 95931
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 95931
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Так что я считаю, что это ограничение по умолчанию. Поэтому мой вопрос заключается в том, что является причиной ограничения этих ресурсов пользователя root по умолчанию? Теперь, когда я пытаюсь установить предел файла как неограниченный как пользователь root с помощью приведенной ниже команды, я получаю сообщение об ошибке «Операция не разрешена».
ulimit -H -n unlimited
Что мешает мне установить ограничение на бесконечность и насколько безопасно установить его на бесконечность?
Эти ограничения по умолчанию жестко запрограммированы в исходном коде ядра. Эти пределы установлены для процесса init
ядром, а другие процессы наследуют его от init
. См. здесь .
Почему вы получаете ошибку при попытке установить неограниченное количество открытых файлов, скорее всего, потому что общесистемная настройка не является неограниченной, проверьте ее с помощью cat /proc/sys/fs/file-max
. См. здесь :
file-max & amp; file-nr:
Значение в file-max обозначает максимальное количество дескрипторов файлов, которое выделит ядро Linux. Когда вы получаете много сообщений об ошибках из-за отсутствия файловых дескрипторов, вы можете захотеть увеличить этот лимит.
Вы можете изменить этот общесистемный лимит, если вы запустите, например, echo 300000 > /proc/sys/fs/file-max
как root или с sysctl -w fs.file-max=300000
как root. Чтобы сделать эти изменения постоянными, добавьте строку, подобную следующей
fs.file-max=300000
, в файл /etc/sysctl.conf
, например, запустив echo "fs.file-max=300000" >> /etc/sysctl.conf
от имени пользователя root.