Генерация дампов ядра в Linux

2776
roymustang86

Что-то очень запутанное происходит в отношении моей коробки.

Ниже приведены мои настройки в /etc/sysctl.conf:

kernel.core_pattern = core kernel.core_uses_pid = 1 

Во /etc/profile, у меня есть это:

ulimit -S -c unlimited >/dev/null 2>1 

И я проверяю все, посмотрев на:

cat /proc/sys/kernel/core_pattern cat /proc/sys/kernel/core_uses_pid 

Итак, когда мы делаем a ulimit -c, он возвращает значение unlimited.

когда мы делаем ulimit -S -c, он возвращает значение unlimited.

когда мы делаем ulimit -H -c, он возвращает значение unlimited.

И когда я работаю kill -6против запущенного процесса, я не получаю ядро.

Когда я запускаю ulimit -c unlimited, и снова запускаю процесс, и запускаю kill -6, он генерирует ядро.

Может кто-нибудь объяснить, в чем разница между мягким и жестким ограничением?

И должны ли мы вообще менять жесткий предел?

Мне не нравится эта ситуация, потому что ядра иногда генерируются, а иногда нет.

Даже если я изменю limit.conf, мне бы очень хотелось понять, что я делаю.

Еще несколько вещей, которые мне нужно раскрыть, это то, что я работаю в среде RHEL 6 (x86_64).

И что на диске достаточно места, и это не процесс DAEMON или программа setuid. И в папке достаточно прав для создания новых файлов, и в каталоге времени выполнения нет файлов / папок с именем core.

1

2 ответа на вопрос

0
jjlin

You can read about hard vs. soft limits in the Bash manual section on ulimit.

Since you say you get a core file if you restart the program from your shell, the problem is likely that the original process is not getting started in an environment that reads /etc/profile (that file is only read for login shells). You might consider adding ulimit -c unlimited to whatever script is starting that program (before the line that starts it, of course).

0
roymustang86

Таким образом, единственная причина, по которой это происходило, заключалась в том, что скрипт запускался в приглашении sh, в отличие от приглашения bash, где был установлен ulimit. Разве это не странно? Мы изменили скрипт для запуска в bash, и теперь он работает нормально.

Похожие вопросы