Linux Core de dumplocatie instellen

Linux Core De Dumplocatie Instellen



Wat is 'Core Dump' in Linux?

Wanneer een proces onverwacht wordt afgesloten, laat het vaak een 'core dump' in uw systeem achter. Hierbij hoort een relevante boodschap. Een kern dient als foutopsporingstool en is een afbeelding van het geheugen dat ook de foutopsporingsinformatie bevat. Als u een gebruiker bent die een programma niet wil debuggen, kunt u gewoon de kern verwijderen:

$ rm kern

Je kunt het ook ongemoeid laten, omdat de oude kern wordt overschreven als er ooit een nieuwe wordt gedumpt. U kunt de core dumping ook deactiveren met het volgende commando:







$ kleiner worden -c 0

We kunnen de core-dumps on-demand genereren (bijvoorbeeld via een debugger) of ze kunnen automatisch worden geproduceerd bij beëindiging. De kernel initieert kerndumps als gevolg van het abrupt afsluiten van een programma. Deze kunnen voor aanvullende bewerkingen naar een ander programma worden gestuurd (zoals systemd-coredump).



Zoals meestal het geval is, is er een wisselwerking tussen het verzamelen van de gegevens voor betere stabiliteit en het oplossen van problemen en het risico dat de gevoelige informatie uit foutopsporingsgegevens wordt onthuld.



Wat zullen we dekken?

In dit artikel zullen we zien hoe u de locatie van kerndumps op Ubuntu 20.04 OS kunt instellen. Laten we nu beginnen.





Een kerndump genereren

Laten we eerst kijken hoe we een kerndump kunnen genereren. Hiervoor gebruiken we het Linux kill-commando. Zoek eerst de PID van een proces en stuur vervolgens een kill-signaal. Laten we bijvoorbeeld het slaapproces starten en het vervolgens doden met zijn PID:

$ slaap 500

$ doden -s SIGTRAP $ ( greep slaap )



Nu u hebt geleerd hoe u een kerndump kunt genereren, kunt u deze gebruiken in de volgende secties.

Waar gaan ze heen?

Het kerndumpbestand heet standaard core.pid en wordt gemaakt in de werkmap van de toepassing. Hier is pid de proces-ID.

Met de ulimit-tool kunt u de systeemresourcelimieten voor de huidige shell en eventuele volgende shells ophalen of wijzigen. Gebruik de volgende opdracht om de limiet voor de kernbestandsgrootte te controleren of te configureren:

$ kleiner worden -c

Om te voorkomen dat het kernbestand wordt afgebakend of afgekapt, moet u ervoor zorgen dat de limiet globaal is ingesteld op 'onbeperkt' [1]. Dit kan gedaan worden in /etc/security/limits.conf door de volgende regel toe te voegen:

root - core onbeperkt

* - kern onbeperkt

Log nu gewoon uit en weer in om de limieten toe te passen op uw sessie.

De locatie van de kerndump aanpassen

De opdracht 'sysctl kernel.core_pattern' of de opdracht '/proc/sys/kernel/core_pattern' wordt normaal gesproken gebruikt om de locatie in te stellen waar de kerndumps naartoe gaan.

Voer de volgende opdracht in om de instellingen voor het huidige kernpatroon te zien:

$ kat / proc / systeem / pit / kern_patroon

Gewoonlijk vindt u hier de standaardwaarde vermeld als 'kern'.

'/proc/sys/kernel/core_pattern' gebruiken om de Core Dump-locatie in te stellen

Laten we de kerndumps tijdelijk omleiden naar een nieuwe locatie, bijvoorbeeld /tmp/dumps/core, met behulp van het bestand '/proc/sys/kernel/core_pattern' [2] [3]. Volg nu de volgende stappen:

Stap 1 . Maak eerst een map om de kerndumps op te slaan:

$ mkdir -p / tmp / dumpen / kernen /

Stap 2 . Geef de vereiste machtigingen voor deze map:

$ chmod een+x / tmp / dumpen / kernen /

Stap 3 . Stel nu tijdelijk het kerndumppad in:

$ echo '/tmp/dump/kernen/kern' | sudo tee / proc / systeem / pit / kern_patroon

Nogmaals, stel globaal de ulimit in op onbeperkt.

Hier kunnen we wat andere informatie toevoegen aan de naam van het bestand, zoals hieronder weergegeven:

$ echo '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / systeem / pit / kern_patroon

Elke parameter die hier wordt gebruikt, kan als volgt worden gedefinieerd:

% en: voor uitvoerbaar het dossier naam

% p: voor werkwijze ID kaart of pid.

% t: voor een tijdstempel toevoegen

Stap 4 . Vervolgens moeten we het bestand '/etc/sysctl.conf' wijzigen om de vorige instellingen permanent toe te passen. Dit bestand openen:

$ sudo nano / enz / sysctl.conf

Voeg nu de volgende regel toe aan dit bestand:

kernel.core_patroon = / tmp / dumpen / kernen / kern

Ook kunt u in plaats van deze regel dit toevoegen:

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

Dat is alles wat we hoeven te doen. Genereer nu een kerndump zoals vermeld in het gedeelte 'Een kerndump genereren'. Hierna kunnen we controleren of ons kernbestand is gegenereerd of niet:

$ ls -l / tmp / dumpen / kernen /

De opdracht 'Sysctl' gebruiken om de locatie van de kerndump in te stellen

Zoals eerder vermeld, kunnen we ook de opdracht sysctl voor hetzelfde doel gebruiken. Laten we de locatie van de kerndump en de indeling van het kernbestand wijzigen:

Stap 1 . Maak een nieuwe map aan en geef de vereiste rechten:

$ mkdir -p / tmp / mijn dumps

$ chmod een+rwx / tmp / mijn dumps

Stap 2 . Voer nu gewoon de volgende opdracht uit:

$ sudo systeem -in kernel.core_pattern= / tmp / mijn dumps / kern_ % en. % p_ % t

Stap 3 . Genereer nu opnieuw de kerndump zoals we eerder deden. Controleer hierna of het kernbestand is gegenereerd of niet:

$ ls -l / tmp / mijn dumps /

Op Ubuntu-systemen worden vaak core-dumps naar Apport gestuurd. Voor op Red Hat gebaseerde systemen kan het worden doorgestuurd naar de Automatic Bug Reporting Tool (ABRT). Aanvankelijk had ik een probleem bij het configureren van de kerndumplocatie, dus moest ik Apport volledig uitschakelen op Ubuntu 20.04. Misschien is dit ook het geval met Red Hat en anderen.

Gevolgtrekking

In dit artikel hebben we gezien hoe we de locatie van kerndumps op Ubuntu 20.04 OS kunnen aanpassen. Core-dumps kunnen u helpen erachter te komen wat er mis is, maar ze zijn verschrikkelijk voor het lekken van gevoelige gegevens. Core-dumps moeten worden uitgeschakeld wanneer ze niet nodig zijn en alleen worden ingeschakeld wanneer dit absoluut noodzakelijk is. Controleer in een dergelijke situatie of de bestanden veilig zijn opgeslagen, zodat gewone gebruikers geen toegang hebben tot de gegevens. Bovendien moet u, ongeacht uw beslissing, altijd uw configuratie testen om er zeker van te zijn dat deze werkt zoals bedoeld.

Core-dumps en standaardconfiguraties worden door verschillende besturingssystemen verschillend afgehandeld. De laatste tijd hebben de meeste Linux-systemen systemd geadopteerd, wat heeft geleid tot enkele kleine regelaanpassingen. Afhankelijk van hoe uw systeem is geconfigureerd, moet u mogelijk naar kerndumps zoeken.