Indstilling af Linux Core the Dump Location

Indstilling Af Linux Core The Dump Location



Hvad er 'Core Dump' i Linux?

Når en proces uventet afsluttes, efterlader den ofte et 'kernedump' i dit system. Der er et relevant budskab, der følger med dette. En kerne fungerer som et fejlfindingsværktøj og er et billede af hukommelsen, der også inkluderer fejlfindingsinformationen. Hvis du er en bruger, der ikke ønsker at fejlsøge et program, kan du bare slette kernen:

$ rm kerne

Du kan også lade den stå urørt, da den gamle kerne bliver overskrevet, hvis en ny nogensinde bliver dumpet. Du kan også deaktivere kernedumping med følgende kommando:







$ formindske -c 0

Vi kan generere kernedumps on demand (for eksempel via en debugger), eller de kan produceres automatisk ved opsigelse. Kernen initierer kernedumps som en konsekvens af et programs bratte afslutning. Disse kan blive sendt til et andet program (såsom systemd-coredump) for yderligere operationer.



Som det normalt er tilfældet, er der en afvejning mellem at indsamle dataene for bedre stabilitet og fejlfinding og risikoen for at afsløre de følsomme oplysninger fra debug-data.



Hvad vil vi dække?

I denne artikel vil vi se, hvordan du indstiller placeringen af ​​kernedumps på Ubuntu 20.04 OS. Lad os komme i gang nu.





Generering af en Core Dump

Lad os først se, hvordan vi kan generere et kernedump. Til dette bruger vi Linux kill-kommandoen. Find først PID'et for en proces og send derefter et dræbningssignal. Lad os for eksempel starte søvnprocessen og derefter dræbe den med dens PID:

$ søvn 500

$ dræbe -s SIGTRAP $ ( greb søvn )



Nu hvor du har lært, hvordan du genererer et kernedump, kan du bruge det i de følgende efterfølgende afsnit.

Hvor går de hen?

Kernedumpfilen hedder core.pid som standard og oprettes i programmets arbejdsmappe. Her er pid proces-id'et.

Med ulimit-værktøjet kan du få eller ændre systemressourcegrænserne for den aktuelle shell og eventuelle skaller, der kommer efter den. For at bekræfte eller konfigurere kernefilstørrelsesgrænsen skal du bruge følgende kommando:

$ formindske -c

For at undgå at afgrænse eller afkorte kernefilen, skal du sørge for, at grænsen globalt er sat til 'ubegrænset' [1]. Dette kan gøres i /etc/security/limits.conf ved at tilføje følgende linje:

root - kerne ubegrænset

* - kerne ubegrænset

Nu skal du blot logge ud og logge ind igen for at få de grænser, der gælder for din session.

Tilpasning af placeringen af ​​Core Dump

Kommandoen 'sysctl kernel.core_pattern' eller '/proc/sys/kernel/core_pattern' bruges normalt til at indstille den placering, hvor kernedumperne går.

Indtast følgende kommando for at se indstillingerne for det aktuelle kernemønster:

$ kat / proc / sys / kerne / kerne_mønster

Normalt vil du finde standardværdien angivet som 'kerne' her.

Brug af '/proc/sys/kernel/core_pattern' til at indstille Core Dump-placeringen

Lad os midlertidigt omdirigere kernedumps til en ny placering, f.eks. /tmp/dumps/core, ved at bruge filen '/proc/sys/kernel/core_pattern' [2] [3]. Følg nu følgende trin:

Trin 1 . Først skal du lave en mappe til at gemme kernedumps:

$ mkdir -s / tmp / losseplads / kerner /

Trin 2 . Giv de nødvendige tilladelser til denne mappe:

$ chmod a+x / tmp / losseplads / kerner /

Trin 3 . Indstil nu kernedumpstien midlertidigt:

$ ekko '/tmp/dump/cores/core' | sudo tee / proc / sys / kerne / kerne_mønster

Igen, globalt sæt ulimit til ubegrænset.

Her kan vi tilføje nogle andre oplysninger til navnet på filen som vist i følgende:

$ ekko '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / sys / kerne / kerne_mønster

Hver parameter, der bruges her, kan defineres som følger:

% og: til eksekverbar fil navn

% p: til behandle id eller pid.

% t: til tilføje et tidsstempel

Trin 4 . Dernæst skal vi ændre filen “/etc/sysctl.conf” for permanent at anvende de tidligere indstillinger. Åbn denne fil:

$ sudo nano / etc / sysctl.conf

Tilføj nu følgende linje til denne fil:

kernel.core_pattern = / tmp / losseplads / kerner / kerne

I stedet for denne linje kan du også tilføje dette:

kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

Det er alt, vi skal gøre. Generer nu et kernedump som nævnt i afsnittet 'Generering af et kernedump'. Efter dette kan vi kontrollere, om vores kernefil er genereret eller ej:

$ ls -l / tmp / losseplads / kerner /

Brug 'Sysctl'-kommandoen til at indstille Core Dump-placering

Som tidligere nævnt kan vi også bruge kommandoen sysctl til samme formål. Lad os ændre kernedumpplaceringen og formatet på kernefilen:

Trin 1 . Opret en ny mappe og giv de nødvendige tilladelser:

$ mkdir -s / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Trin 2 . Nu skal du bare køre følgende kommando:

$ sudo sysctl -i kernel.core_pattern= / tmp / mydumps / kerne_ % og. % p_ % t

Trin 3 . Generer nu kernedumpet igen, som vi gjorde tidligere. Efter dette skal du kontrollere, om kernefilen er genereret eller ej:

$ ls -l / tmp / mydumps /

På Ubuntu-systemer sendes kernedumps ofte til Apport. For Red Hat-baserede systemer kan det blive videresendt til Automatic Bug Reporting Tool (ABRT). I starten stod jeg over for et problem med at konfigurere kernedump-placeringen, så jeg var nødt til at deaktivere Apport helt på Ubuntu 20.04. Måske kan dette også være tilfældet med Red Hat og andre.

Konklusion

I denne artikel har vi set, hvordan vi kan tilpasse placeringen af ​​kernedumps på Ubuntu 20.04 OS. Core dumps kan hjælpe dig med at finde ud af, hvad der er galt, men de er forfærdelige til at lække følsomme data. Core dumps bør deaktiveres, når de ikke er påkrævet, og kun aktiveres, når det er absolut nødvendigt. I en sådan situation skal du bekræfte, at filerne er sikkert gemt, så de almindelige brugere ikke kan få adgang til dataene. Desuden bør du, uanset din beslutning, altid teste din konfiguration for at sikre, at den fungerer efter hensigten.

Kernedumps og standardkonfigurationer håndteres forskelligt af forskellige operativsystemer. I den seneste tid har de fleste Linux-systemer vedtaget systemd, hvilket har medført nogle mindre regeljusteringer. Afhængigt af hvordan dit system er konfigureret, skal du muligvis søge efter kernedumps.