Основной файл - это образ процесса, который создается операционной системой, когда процесс неожиданно завершается. Основные файлы создаются, когда программа ведет себя неправильно из-за ошибки или нарушения работы процессора или механизмов защиты памяти. Операционная система убивает программу и создает файл ядра.
Этот файл может быть очень полезен для определения того, что пошло не так с процессом. Создание основных файлов может быть включено по умолчанию, в зависимости от дистрибутива и версии Linux, которая у вас есть.
Если вам вообще не нужны основные файлы, установите «ulimit -c 0» в ваших файлах запуска. Это значение по умолчанию во многих системах; в /etc/profile
вы можете найти
Поскольку усеченные файлы бесполезны, установите размер основного файла Linux на «неограниченный».
Usage of ulimit Action
ulimit -c # check the current corefile limit
ulimit -c 0 # turn off corefiles
ulimit -c x # set the maximum corefile size to x number of 1024bytes
ulimit -c unlimited # turn on corefiles with unlimited size
ulimit -n unlimited # allows an unlimited number of open file descriptors
ulimit -p # size of pipes
ulimit -s # maximum native stack size for a process
ulimit -u # number of user processes
help ulimit #list of other options
Основной файл помещается в текущий рабочий каталог процесса с учетом прав на запись для процесса JVM и свободного дискового пространства.
В зависимости от уровня ядра доступна полезная опция ядра, которая дает файлам ядра более значимые имена. От имени пользователя root опция sysctl -w kernel.core_users_pid = 1 гарантирует, что файлы ядра имеют имя в форме «Core.PID».
ulimit -S -c 0 > /dev/null 2>&1
Если вам НУЖНЫ основные файлы, вам нужно сбросить их в своем собственном .bash_profile:
ulimit -c 50000
разрешит файлы ядра, но ограничит их до 50 000 байтов.
У вас есть больше контроля над основными файлами в /proc/sys/kernel/
Например, вы можете устранить помеченные на pid с помощью
echo "0" > /proc/sys/kernel/core_uses_pid
Основные файлы будут просто называться «core». Люди делают такие вещи, чтобы пользователь мог поместить не записываемый файл с именем «core» в каталоги, где он не хочет создавать дампы ядра. Это может быть каталог (ядро mkdir) или файл (сенсорное ядро; ядро chmod 000).
Но, возможно, более интересным является то, что вы можете сделать:
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern
Все /tmp/corefiles
core-файлы затем будут брошены (не меняйте core_uses_pid, если вы это делаете).
Проверьте это с помощью простого скрипта:
# script that dumps core
kill -s SIGSEGV $$
В Ubuntu создание файлов ядра контролируется через файл /etc/default/collectd
. Вы можете включить создание дампов ядра, установив:
ENABLE_COREFILES=1
Расположение файла ядра
После сбоя демона в его текущем рабочем каталоге будет создан файл. По умолчанию это pkglocalstatedir
, то есть prefix/var/lib/collectd
. Если вы установили пакет, этот каталог скорее всего /var/lib/collectd
.
Источники: А. П. Лоуренс и IBM