Nastavení Linux Core umístění výpisu

Nastaveni Linux Core Umisteni Vypisu



Co je to „Core Dump“ v Linuxu?

Když se proces neočekávaně ukončí, často za sebou zanechá „výpis jádra“ ve vašem systému. Součástí je relevantní zpráva. Jádro slouží jako ladicí nástroj a je obrazem paměti, který také obsahuje ladicí informace. Pokud jste uživatel, který nechce ladit program, můžete jednoduše odstranit jádro:

$ rm jádro

Můžete jej také ponechat nedotčené, protože staré jádro se přepíše, pokud je někdy vyhozeno nové. Vyprázdnění jádra můžete také deaktivovat pomocí následujícího příkazu:







$ pokles -C 0

Výpisy jádra můžeme generovat na vyžádání (například pomocí debuggeru) nebo je lze vytvářet automaticky po ukončení. Jádro spouští výpisy jádra v důsledku náhlého ukončení programu. Ty mohou být odeslány do některého jiného programu (jako je systemd-coredump) pro další operace.



Jak už to tak bývá, existuje kompromis mezi shromažďováním dat pro lepší stabilitu a odstraňováním problémů a rizikem odhalení citlivých informací z ladicích dat.



Co budeme pokrývat?

V tomto článku uvidíme, jak nastavit umístění výpisů jádra na Ubuntu 20.04 OS. Začněme hned.





Generování Core Dump

Nejprve se podívejme, jak můžeme vygenerovat výpis jádra. K tomu používáme příkaz Linux kill. Nejprve najděte PID procesu a poté odešlete signál zabíjení. Začněme například proces spánku a poté jej zabijme pomocí jeho PID:

$ spát 500

$ zabít -s SIGTRAP $ ( rukojeť spát )



Nyní, když jste se naučili generovat výpis jádra, můžete jej použít v následujících následujících částech.

Kam jdou?

Soubor výpisu jádra se standardně jmenuje core.pid a je vytvořen v pracovním adresáři aplikace. Zde je pid id procesu.

Pomocí nástroje ulimit můžete získat nebo změnit limity systémových prostředků pro aktuální shell a všechny shelly, které následují po něm. Chcete-li ověřit nebo nakonfigurovat limit velikosti souboru jádra, použijte následující příkaz:

$ pokles -C

Abyste se vyhnuli oddělování nebo ořezávání základního souboru, ujistěte se, že je limit globálně nastaven na „neomezený“ [1]. To lze provést v /etc/security/limits.conf přidáním následujícího řádku:

root - core neomezeně

* - jádro neomezené

Nyní se jednoduše odhlaste a znovu přihlaste, aby se limity vztahovaly na vaši relaci.

Přizpůsobení umístění hlavní skládky

Příkaz „sysctl kernel.core_pattern“ nebo „/proc/sys/kernel/core_pattern“ se obvykle používá k nastavení umístění, kam se ukládají výpisy jádra.

Chcete-li zobrazit nastavení pro aktuální vzor jádra, zadejte následující příkaz:

$ kočka / proc / sys / jádro / core_pattern

Obvykle zde najdete výchozí hodnotu uvedenou jako „core“.

Pomocí „/proc/sys/kernel/core_pattern“ nastavte umístění výpisu jádra

Pojďme dočasně přesměrovat výpisy jádra do nového umístění, řekněme /tmp/dumps/core, pomocí souboru „/proc/sys/kernel/core_pattern“ [2] [3]. Nyní postupujte podle následujících kroků:

Krok 1 . Nejprve vytvořte adresář pro ukládání výpisů jádra:

$ mkdir -p / tmp / skládka / jádra /

Krok 2 . Udělte tomuto adresáři požadovaná oprávnění:

$ chmod a+x / tmp / skládka / jádra /

Krok 3 . Nyní dočasně nastavte cestu výpisu jádra:

$ echo '/tmp/dump/cores/core' | sudo tričko / proc / sys / jádro / core_pattern

Opět globálně nastavte ulimit na neomezený.

Zde můžeme k názvu souboru připojit některé další informace, jak je znázorněno v následujícím:

$ echo '/tmp/dump/cores/core_%e.%p_%t' | sudo tričko / proc / sys / jádro / core_pattern

Každý parametr, který je zde použit, lze definovat následovně:

% a: pro spustitelný soubor název

% p: pro proces id nebo pid.

% t: pro přidání časového razítka

Krok 4 . Dále musíme změnit soubor „/etc/sysctl.conf“, aby trvale platila předchozí nastavení. Otevřete tento soubor:

$ sudo nano / atd / sysctl.conf

Nyní do tohoto souboru přidejte následující řádek:

kernel.core_pattern = / tmp / skládka / jádra / jádro

Místo tohoto řádku můžete také přidat toto:

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

To je vše, co musíme udělat. Nyní vygenerujte výpis jádra, jak je uvedeno v části „Vytvoření výpisu jádra“. Poté můžeme zkontrolovat, zda je náš základní soubor vygenerován nebo ne:

$ ls -l / tmp / skládka / jádra /

Použití příkazu „Sysctl“ k nastavení umístění výpisu jádra

Jak již bylo zmíněno dříve, ke stejnému účelu můžeme použít také příkaz sysctl. Změňme umístění výpisu jádra a formát základního souboru:

Krok 1 . Vytvořte nový adresář a udělte požadovaná oprávnění:

$ mkdir -p / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Krok 2 . Nyní stačí spustit následující příkaz:

$ sudo sysctl -v kernel.core_pattern= / tmp / mydumps / jádro_ % a. % p_ % t

Krok 3 . Nyní znovu vygenerujte výpis jádra jako dříve. Poté zkontrolujte, zda je vygenerován základní soubor nebo ne:

$ ls -l / tmp / mydumps /

Na systémech Ubuntu se výpisy jádra často odesílají do Apportu. U systémů založených na Red Hat může být předán do nástroje Automatic Bug Reporting Tool (ABRT). Zpočátku jsem se potýkal s problémem při konfiguraci umístění výpisu jádra, takže jsem musel úplně zakázat Apport na Ubuntu 20.04. Možná to může být i případ Red Hatu a dalších.

Závěr

V tomto článku jsme viděli, jak můžeme přizpůsobit umístění výpisů jádra na Ubuntu 20.04 OS. Základní výpisy vám mohou pomoci zjistit, co je špatně, ale jsou hrozné pro únik citlivých dat. Výpisy jádra by měly být deaktivovány vždy, když nejsou vyžadovány, a povoleny pouze tehdy, když je to nezbytně nutné. V takové situaci ověřte, zda jsou soubory bezpečně uloženy, aby k nim běžní uživatelé neměli přístup. Kromě toho, bez ohledu na vaše rozhodnutí, byste měli vždy otestovat svou konfiguraci, abyste se ujistili, že funguje tak, jak bylo zamýšleno.

Výpisy jádra a výchozí konfigurace jsou různými operačními systémy zpracovány odlišně. V poslední době většina linuxových systémů přijala systemd, což přineslo některé drobné úpravy pravidel. V závislosti na tom, jak je váš systém nakonfigurován, možná budete muset hledat výpisy jádra.