bash: ulimit: размер основного файла: невозможно изменить ограничение: операция не разрешена

28

Fedora 12 gcc 4.4.1

Я занимаюсь программированием, и моя программа дала мне дамп стека.

Тем не менее, нет никакого файла ядра для меня, чтобы исследовать.

Так я и сделал:

ulimit -c unlimited

и получил это сообщение об ошибке:

bash: ulimit: core file size: cannot modify limit: Operation not permitted

Я также попытался установить ulimit на 50000 и все еще получил ту же ошибку.

Результаты ulimit -a:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 12275
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) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
ant2009
источник

Ответы:

25

Grep для жесткого ограничения настройки в ваших файлах инициализации bash. Со страницы руководства bash .

Жесткий лимит не может быть увеличен после его установки; мягкий предел может быть увеличен до значения жесткого ограничения.

Жесткий предел устанавливается с помощью флага ulimit -H. Он может быть установлен в файлах / etc / bash * или / etc / profile *. Ищите параметр ulimit -Hc.

Даррен Холл
источник
man ulimit: Если не указаны ни -H, ни -S, устанавливаются как мягкие, так и жесткие ограничения . Поэтому поиск -H или -S не обязательно приведет вас к правильному решению. Просто grep для ulimit, а затем выясните, установлены ли -H или -S или оба неявно. Конечно, это десятилетие спустя, поэтому поведение или страницы руководства могли обновляться со времени первоначального вопроса / ответа.
Джим
1

Я имел это случиться со мной, когда я использовал dropbearв качестве сервера SSH. Очевидно, dropbear устанавливает некоторые жесткие ограничения, прежде чем порождать вашу оболочку.

Переход на OpenSSH решил проблему.

Барри Браун
источник
Верно. Прямо в начале main () есть вызов disallow_core (), который вызывает setrlimit (2). Из соображений безопасности, конечно, но должен быть лучший способ. github.com/mkj/dropbear/blob/master/svr-main.c
Фруктовое мороженое