Hvordan aktivere kjernedump i Linux

Hvordan aktivere kjernedump i Linux

Denne opplæringen forklarer hvordan du aktiverer kjernedump i Linux.

Etter å ha lest denne opplæringen vil du kunne sjekke om kjernedump er aktivert, hvordan du aktiverer eller deaktiverer den, hvordan du vil se og mer.

Core Dump Files brukes til å diagnostisere og feilsøke programvarekrasj.

En kjernedump er et ikke-strukturert register over minneinnholdet som inneholder informasjon om utførelse av programvare unormalt avsluttet, inkludert årsaken til krasjet.

Med andre ord, dette er et øyeblikksbilde av programtilstanden med utførelses- og termineringsprosessen registrert. Du kan tenke på Core Dump som en flyvakt eller en loggfil.

Kjernedumpestyring kan variere fra en Linux -distribusjon til andre, denne opplæringen er optimalisert både for Debian -baserte Linux -distribusjoner som Ubuntu, og Redhat Linux -distribusjoner som Centos.

Alle instruksjoner som er inkludert i denne artikkelen inneholder skjermbilder, noe som gjør det enkelt for hver Linux -bruker å forstå og følge dem.

Aktivering av kjernedump i Linux

Det første trinnet er å sjekke om kjernedump er aktivert. For dette formålet, bruk følgende kommando. Hvis kjernefilstørrelsen er 0, som i eksemplet nedenfor, er kjernedump deaktivert.

ulimit -a | grep core


For å aktivere kjernedump i Linux, med ubegrenset størrelse, bruk følgende kommando. Deretter skal du utføre den forrige kommandoen du vil se 0 erstattes med ubegrenset.

ulimit -s -c ubegrenset

For å aktivere kjernedump permanent, må du redigere filen/etc/sikkerhet/grenser.konf. Åpne den med privilegier ved hjelp av hvilken som helst tekstredigerer.

sudo nano/etc/sikkerhet/grenser.konf

Deretter legger du til følgende linje og lukker endringsendringer:

* myk kjerne ubegrenset

La oss nå prøve å utføre et program som er programmert for å krasje med vilje.

Som du kan se på skjermbildet nedenfor, ble kjernedumpen generert.

I henhold til standardkonfigurasjonen på Debian -baserte Linux -distribusjoner, bør kjernedumpen opprettes i den gjeldende katalogen. Du kan sjekke dette ved å utføre følgende kommando:

LS -LTR CORE

Som du ser i forrige figur, ble kjernedumpen riktig generert.

For å se det, må du installere GNU -feilsøkingen. Du kan installere den ved hjelp av APT som vist på bildet nedenfor.

Merk at brukere av Redhat -baserte systemer må bruke Automatic Bug Reporting Tool (ABRT) i stedet for GDB.

sudo apt install GDB -y

For å se kjernedumpfilene, bruk følgende syntaks:

GDB kjerne

I mitt tilfelle løper jeg:

GDB CrashingApp Core

Du blir bedt om å trykke “C” for å fortsette. Trykk på den, så ser du rapporten.

Som standard kalles kjernedumpfiler.

sudo sysctl -w kjerne.core_pattern = core

Du kan endre navn og destinasjonsmønstre for å identifisere kjernedumper enkelt.

Kommandoen er følgende:

-%u vil inkludere bruker -ID i kjernedumpnavnet. - %G vil omfatte gruppe -ID og %P PID.

sudo sysctl -w kjerne.core_pattern = core-%u-%g-%p

Som du kan se, etter å ha utført den krasjet appen igjen, genereres en ny kjernedump inkludert UID, GID og PID.

ls -ltr kjerne*

Det er flere verdier du kan bruke for å definere kjernedumpmønstre. Du kan finne dem på listen nedenfor.

VERDI Funksjon
% '%' er droppet
%% output One '%'
%p Inkluderer PID
%P Inkluderer global PID
%Jeg Viser tråd -ID
%JEG Global tråd -ID
%u bruker-ID
%g Gruppe -ID
%d Dumpmodus
%s Signalnummer
%t Unix tid for dump
%h Vertsnavn
%e Kjørbar fil
%E Kjørbar filsti

Du kan også definere en kjernedumps katalog for å lagre dem.

Syntaksen er følgende:

“/Cored” er katalogen der kjernedumpene vil bli lagret. Disse navnene vil inneholde både PID og Global PID.

sudo sysctl -w kjerne.core_pattern =/cored/core-%p-%p

Som du kan se, etter å ha kjørt den krasjet appen, ble kjernedumpen lagret i /Cored Directory inkludert både PID og GPID.

ls -ltr /cored

Hvordan deaktivere kjernedumpene i Linux

Deaktivering av kjernedump er så enkel som å muliggjøre dem.

Bare sett grensen til 0 ved å kjøre følgende kommando:

ulimit -s -c 0

For å deaktivere kjernedump, rediger/etc/Security/Limits permanent.Conf -fil ved hjelp av en hvilken som helst tekstredigerer som vist på figuren nedenfor.

sudo nano/etc/sikkerhet/grenser.konf

Legg til følgende to linjer, og avslutt deretter lagringsendringer.

* myk kjerne 0
* Hard Core 0

Til slutt, sjekk om Core Dump ble deaktivert ved å utføre følgende:

ulimit -a | grep core

Som du kan se at kjernefilstørrelsesgrensen er 0, er kjernedump deaktivert.

Konklusjon

Kjernedumps kan være veldig nyttig for feilsøkingsprosedyrer og identifisere feil. Å bli kjent for dem anbefales for å forbedre problemer med problemer. De kan også være nyttige for å fange opp data frigjort av dynamisk minne, og hente informasjon om ikke lenger kjørende programmer. De kan også være nyttige for programmerere å finne feil. En kjernedump kan redde tilstanden til en prosess i en definert tilstand for å komme tilbake til den senere. Det kan også dumpes på en ekstern vert over et nettverk (som er en sikkerhetsrisiko).