Как снять ограничение на размер файла дампа ядра

11

Я хотел бы увеличить максимальный размер файла дампа основной памяти обычного пользователя. Используя bash, я могу установить это так:

$ ulimit -c 100

который хорошо работает в первый раз, когда я его установил. Однако в следующий раз, когда я буду использовать эту команду, я смогу установить для этого предела только значение, не превышающее 100. В общем, я могу установить для него произвольное значение только при первом использовании этой команды после входа в систему. Все последующее время возможные значения ограничиваются сверху изначально установленным значением.

Как я могу сделать это постоянным при многократном использовании команды?

Петр Башиста
источник

Ответы:

9

За @Peter Basista ответ «S в свой собственный вопрос:

Сначала я думал, что это ошибка, и поэтому я начал этот вопрос. Но оказалось, что это просто совершенно правильное поведение. Оказывается, поговорка RTFM применима и здесь.

Как man bashвидно, ulimitвстроенная команда имеет дополнительные параметры: -Hдля установки так называемых жестких пределов и -S для установки так называемых мягких пределов. Более того, если ни одна из этих опций не указана, поведение по умолчанию состоит в том, что она ulimitпытается одновременно установить и мягкие, и жесткие ограничения на одно и то же значение. И это была проблема.

Теперь есть цитата из bashсправочной страницы:

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

Итак, поехали. Правильное использование ulimitкоманды всегда должно иметь это в виду. Самое главное, его никогда не следует использовать без -Hили -Sопций, если вы не уверены, что знаете, что делаете (чего в то время я явно не знал).

Что я должен был сделать, это что-то вроде этого:

После входа в систему: ulimit -H -c unlimited

Каждый раз, когда я хочу изменить максимальный размер дампа ядра ulimit -S -c <new size>

Итак, вот и все. Я надеюсь, что это может помочь кому-то, кто может бороться с подобной проблемой.

Kevin Bowen
источник