Что-то очень запутанное происходит в отношении моей коробки.
Ниже приведены мои настройки в /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
Итак, когда мы делаем 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.