Eine Kerndatei ist ein Image eines Prozesses, der vom Betriebssystem erstellt wird, wenn der Prozess unerwartet beendet wird. Kerndateien werden erstellt, wenn sich ein Programm aufgrund eines Fehlers oder einer Verletzung der CPU- oder Speicherschutzmechanismen schlecht verhält. Das Betriebssystem beendet das Programm und erstellt die Kerndatei.
Diese Datei kann sehr nützlich sein, um festzustellen, was bei einem Prozess schief gelaufen ist. Die Produktion von Kerndateien kann standardmäßig aktiviert werden, abhängig von der Distribution und Version von Linux.
Wenn Sie überhaupt keine Kerndateien möchten, setzen Sie in Ihren Startdateien "ulimit -c 0". Dies ist die Standardeinstellung auf vielen Systemen. in können /etc/profile
Sie finden
Da abgeschnittene Dateien keinen praktischen Nutzen haben, setzen Sie die Größe der Linux-Kerndatei auf "unbegrenzt".
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
Die Kerndatei wird im aktuellen Arbeitsverzeichnis des Prozesses abgelegt, vorbehaltlich Schreibberechtigungen für den JVM-Prozess und freiem Speicherplatz.
Abhängig von der Kernel-Ebene steht eine nützliche Kernel-Option zur Verfügung, mit der Corefiles aussagekräftigere Namen erhalten. Als Root-Benutzer stellt die Option sysctl -w kernel.core_users_pid = 1 sicher, dass Kerndateien den Namen "Core.PID" haben.
ulimit -S -c 0 > /dev/null 2>&1
Wenn Sie Kerndateien möchten, müssen Sie diese in Ihrem eigenen .bash_profile zurücksetzen:
ulimit -c 50000
würde Kerndateien zulassen, sie aber auf 50.000 Bytes beschränken.
Sie haben mehr Kontrolle über die Kerndateien in /proc/sys/kernel/
Zum Beispiel können Sie das auf pid by markierte Tag entfernen
echo "0" > /proc/sys/kernel/core_uses_pid
Kerndateien werden dann einfach "Kern" genannt. Leute machen solche Dinge, damit ein Benutzer eine nicht beschreibbare Datei mit dem Namen "core" in Verzeichnisse einfügen kann, in denen er keine Core-Dumps generieren möchte. Dies kann ein Verzeichnis (mkdir core) oder eine Datei (touch core; chmod 000 core) sein.
Aber vielleicht interessanter ist, dass Sie Folgendes tun können:
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern
Alle Core-Dateien werden dann geworfen /tmp/corefiles
(ändern Sie nicht core_uses_pid, wenn Sie dies tun).
Testen Sie dies mit einem einfachen Skript:
# script that dumps core
kill -s SIGSEGV $$
Unter Ubuntu wird die Erstellung von Kerndateien über die Datei gesteuert /etc/default/collectd
. Sie können die Erstellung von Core-Dumps aktivieren, indem Sie Folgendes festlegen:
ENABLE_COREFILES=1
Suchen der Kerndatei
Sobald der Dämon abgestürzt ist, wird eine Datei in seinem aktuellen Arbeitsverzeichnis erstellt. Standardmäßig ist dies pkglocalstatedir
dh prefix/var/lib/collectd
. Wenn Sie ein Paket installiert haben, ist dieses Verzeichnis höchstwahrscheinlich /var/lib/collectd
.
Quellen: AP Lawrence und IBM