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:
GDBkjerne
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).