Ställa in Linux Core the Dump Location

Stalla In Linux Core The Dump Location



Vad är 'Core Dump' i Linux?

När en process oväntat avslutas lämnar den ofta efter sig en 'kärndump' i ditt system. Det finns ett relevant meddelande som ingår i detta. En kärna fungerar som ett felsökningsverktyg och är en minnesbild som även inkluderar felsökningsinformationen. Om du är en användare som inte vill felsöka ett program kan du bara ta bort kärnan:

$ rm kärna

Du kan också lämna den orörd, eftersom den gamla kärnan skrivs över om en ny någonsin dumpas. Du kan också inaktivera kärndumpningen med följande kommando:







$ minska -c 0

Vi kan generera kärndumparna på begäran (till exempel via en debugger) eller så kan de produceras automatiskt vid uppsägning. Kärnan initierar kärndumpar som en konsekvens av ett programs abrupta utgång. Dessa kan skickas till något annat program (som systemd-coredump) för ytterligare operationer.



Som vanligt finns det en avvägning mellan att samla in data för bättre stabilitet och felsökning och risken att avslöja den känsliga informationen från felsökningsdata.



Vad kommer vi att täcka?

I den här artikeln kommer vi att se hur du ställer in platsen för kärndumpar på Ubuntu 20.04 OS. Låt oss börja nu.





Generera en Core Dump

Låt oss först se hur vi kan skapa en kärndump. För detta använder vi kommandot Linux kill. Hitta först PID för en process och skicka sedan en dödningssignal. Låt oss till exempel starta sömnprocessen och sedan döda den med dess PID:

$ sömn 500

$ döda -s SIGTRAP $ ( grepp sömn )



Nu när du har lärt dig hur du skapar en kärndump kan du använda den i följande efterföljande avsnitt.

Vart går dom?

Kärndumpfilen heter core.pid som standard och skapas i applikationens arbetskatalog. Här är pid process-id.

Med verktyget ulimit kan du få eller ändra systemresursgränserna för det aktuella skalet och eventuella skal som kommer efter det. För att verifiera eller konfigurera kärnfilens storleksgräns, använd följande kommando:

$ minska -c

För att undvika avgränsning eller trunkering av kärnfilen, se till att gränsen är globalt satt till 'obegränsad' [1]. Detta kan göras i /etc/security/limits.conf genom att lägga till följande rad:

root - kärna obegränsad

* - kärna obegränsad

Nu loggar du helt enkelt ut och loggar in igen för att gränserna ska gälla för din session.

Anpassa platsen för Core Dump

Kommandot 'sysctl kernel.core_pattern' eller '/proc/sys/kernel/core_pattern' används normalt för att ställa in platsen där kärndumparna går.

Ange följande kommando för att se inställningarna för det aktuella kärnmönstret:

$ katt / proc / sys / kärna / core_pattern

Vanligtvis hittar du standardvärdet listat som 'kärna' här.

Använd '/proc/sys/kernel/core_pattern' för att ställa in Core Dump-platsen

Låt oss tillfälligt omdirigera kärndumparna till en ny plats, säg /tmp/dumps/core, med hjälp av filen '/proc/sys/kernel/core_pattern' [2] [3]. Följ nu följande steg:

Steg 1 . Skapa först en katalog för att lagra kärndumparna:

$ mkdir -s / tmp / dumpa / kärnor /

Steg 2 . Ge de nödvändiga behörigheterna till denna katalog:

$ chmod a+x / tmp / dumpa / kärnor /

Steg 3 . Ställ nu tillfälligt in kärndumpningsvägen:

$ eko '/tmp/dump/cores/core' | sudo tee / proc / sys / kärna / core_pattern

Återigen, globalt ställ in ulimiten till obegränsad.

Här kan vi lägga till lite annan information till namnet på filen som visas i följande:

$ eko '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / sys / kärna / core_pattern

Varje parameter som används här kan definieras enligt följande:

% och: för körbar fil namn

% p: för bearbeta id eller pid.

% t: för lägga till en tidsstämpel

Steg 4 . Därefter måste vi ändra filen '/etc/sysctl.conf' för att permanent tillämpa de tidigare inställningarna. Öppna denna fil:

$ sudo nano / etc / sysctl.conf

Lägg nu till följande rad i den här filen:

kernel.core_pattern = / tmp / dumpa / kärnor / kärna

I stället för den här raden kan du lägga till detta:

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

Det är allt vi behöver göra. Skapa nu en kärndump som nämnts i avsnittet 'Generera en kärndump'. Efter detta kan vi kontrollera om vår kärnfil är genererad eller inte:

$ ls -l / tmp / dumpa / kärnor /

Använd kommandot 'Sysctl' för att ställa in Core Dump Location

Som nämnts tidigare kan vi också använda kommandot sysctl för samma ändamål. Låt oss ändra kärndumpningsplatsen och formatet för kärnfilen:

Steg 1 . Skapa en ny katalog och ge nödvändiga behörigheter:

$ mkdir -s / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Steg 2 . Kör nu bara följande kommando:

$ sudo sysctl -i kernel.core_pattern= / tmp / mydumps / kärna_ % och. % p_ % t

Steg 3 . Nu, återigen, generera kärndumpen som vi gjorde tidigare. Efter detta, kontrollera om kärnfilen genereras eller inte:

$ ls -l / tmp / mydumps /

På Ubuntu-system skickas ofta kärndumpar till Apport. För Red Hat-baserade system kan den vidarebefordras till det automatiska felrapporteringsverktyget (ABRT). Från början stod jag inför ett problem med att konfigurera kärndumpningsplatsen, så jag var tvungen att helt inaktivera Apport på Ubuntu 20.04. Kanske kan detta också vara fallet med Red Hat och andra.

Slutsats

I den här artikeln har vi sett hur vi kan anpassa platsen för kärndumpar på Ubuntu 20.04 OS. Kärndumpar kan hjälpa dig att ta reda på vad som är fel, men de är hemska för att läcka känslig data. Kärndumpar bör inaktiveras när de inte behövs och endast aktiveras när det är absolut nödvändigt. I en sådan situation, bekräfta att filerna är säkert lagrade så att vanliga användare inte kan komma åt data. Dessutom, oavsett ditt beslut, bör du alltid testa din konfiguration för att säkerställa att den fungerar som avsett.

Kärndumpar och standardkonfigurationer hanteras olika av olika operativsystem. På senare tid har de flesta Linux-system antagit systemd, vilket har lett till några mindre regeljusteringar. Beroende på hur ditt system är konfigurerat kan du behöva söka efter kärndumpar.