У меня есть выскочка, которая иногда дает сбой из-за ошибки сегментации, и у меня есть несколько вопросов о дампах ядра.
Во-первых, я должен добавить строфу:
limit core unlimited unlimited
Есть ли минус в разрешении неограниченных размеров ядра? Будет ли конечный предел лучше?
Во-вторых, куда пойдет файл ядра? Если по умолчанию это не стандартное или логичное место, как мне сделать так, чтобы оно появилось где-то еще?
upstart
segmentation-fault
ulimit
brooks94
источник
источник
Ответы:
Неограниченные дампы ядра не рекомендуется в большинстве ситуаций, но технически исправны. Дамп ядра имеет только «всю память», имеющуюся у текущего процесса. Так что, самое большее, он может быть таким же большим, как твой оперативная память + своп. Надеюсь, у вас будет больше свободного места, чем это.
В реальной жизни они должны быть "маленькими" по сравнению с тотальной оперативной памятью + свопом.
Файл "должен" в конечном итоге в "текущем каталоге". Для выскочки задач, которые не чдир это обычно /. Если они меняют каталог, то вы сами можете их выследить. Однако вы можете жестко указать путь для них.
Вы должны быть в состоянии проверить
/proc/sys/kernel/core_pattern
возможность «шаблона». Если вы установите шаблон как-то так,echo "/var/log/core" > /proc/sys/kernel/core_pattern
то все ваши ядра должны оказаться в / var / logисточник
Основной файл - это образ процесса, который создается операционной системой, когда процесс неожиданно завершается. Основные файлы создаются, когда программа ведет себя неправильно из-за ошибки или нарушения работы процессора или механизмов защиты памяти. Операционная система убивает программу и создает файл ядра.
Этот файл может быть очень полезен для определения того, что пошло не так с процессом. Создание основных файлов может быть включено по умолчанию, в зависимости от дистрибутива и версии Linux, которая у вас есть.
Если вам вообще не нужны основные файлы, установите «ulimit -c 0» в ваших файлах запуска. Это значение по умолчанию во многих системах; в
/etc/profile
вы можете найтиПоскольку усеченные файлы бесполезны, установите размер основного файла Linux на «неограниченный».
Основной файл помещается в текущий рабочий каталог процесса с учетом прав на запись для процесса JVM и свободного дискового пространства.
В зависимости от уровня ядра доступна полезная опция ядра, которая дает файлам ядра более значимые имена. От имени пользователя root опция sysctl -w kernel.core_users_pid = 1 гарантирует, что файлы ядра имеют имя в форме «Core.PID».
Если вам НУЖНЫ основные файлы, вам нужно сбросить их в своем собственном .bash_profile:
разрешит файлы ядра, но ограничит их до 50 000 байтов.
У вас есть больше контроля над основными файлами в
/proc/sys/kernel/
Например, вы можете устранить помеченные на pid с помощью
Основные файлы будут просто называться «core». Люди делают такие вещи, чтобы пользователь мог поместить не записываемый файл с именем «core» в каталоги, где он не хочет создавать дампы ядра. Это может быть каталог (ядро mkdir) или файл (сенсорное ядро; ядро chmod 000).
Но, возможно, более интересным является то, что вы можете сделать:
Все
/tmp/corefiles
core-файлы затем будут брошены (не меняйте core_uses_pid, если вы это делаете).Проверьте это с помощью простого скрипта:
В Ubuntu создание файлов ядра контролируется через файл
/etc/default/collectd
. Вы можете включить создание дампов ядра, установив:Расположение файла ядра
После сбоя демона в его текущем рабочем каталоге будет создан файл. По умолчанию это
pkglocalstatedir
, то естьprefix/var/lib/collectd
. Если вы установили пакет, этот каталог скорее всего/var/lib/collectd
.Источники: А. П. Лоуренс и IBM
источник