Nastavitev Linux Core mesta izpisa

Nastavitev Linux Core Mesta Izpisa



Kaj je »Core Dump« v Linuxu?

Ko se proces nepričakovano zaključi, za seboj pogosto pusti »odlagališče jedra« v vašem sistemu. Temu je priloženo ustrezno sporočilo. Jedro služi kot orodje za odpravljanje napak in je slika pomnilnika, ki vključuje tudi informacije za odpravljanje napak. Če ste uporabnik, ki ne želi odpravljati napak v programu, lahko samo izbrišete jedro:

$ rm jedro

Prav tako ga lahko pustite nedotaknjenega, saj se staro jedro prepiše, če se kdaj vrže novo. Prav tako lahko deaktivirate izpis jedra z naslednjim ukazom:







$ zmanjšanje -c 0

Jedrne odlagališča lahko ustvarimo na zahtevo (na primer prek razhroščevalnika) ali pa jih izdelamo samodejno po prekinitvi. Jedro sproži odlagališča jedra kot posledico nenadnega izhoda programa. Ti so lahko poslani kakšnemu drugemu programu (kot je systemd-coredump) za dodatne operacije.



Kot je običajno, obstaja kompromis med zbiranjem podatkov za boljšo stabilnost in odpravljanje težav ter tveganjem razkritja občutljivih informacij iz podatkov za odpravljanje napak.



Kaj bomo pokrivali?

V tem članku bomo videli, kako nastaviti lokacijo odlagališč jedra v operacijskem sistemu Ubuntu 20.04. Začnimo zdaj.





Ustvarjanje jedrnega izpisa

Najprej poglejmo, kako lahko ustvarimo jedrni izpis. Za to uporabljamo ukaz kill Linux. Najprej poiščite PID procesa in nato pošljite signal za uničenje. Na primer, zaženimo proces mirovanja in ga nato ubijmo z njegovim PID-om:

$ spati 500

$ ubiti -s SIGTRAP $ ( prijem spati )



Zdaj, ko ste se naučili ustvariti izpis jedra, ga lahko uporabite v naslednjih razdelkih.

Kam gredo?

Datoteka izpisa jedra je privzeto poimenovana core.pid in je ustvarjena v delovnem imeniku aplikacije. Tu je pid ID procesa.

Z orodjem ulimit lahko pridobite ali spremenite omejitve sistemskih virov za trenutno lupino in vse lupine, ki pridejo za njo. Če želite preveriti ali konfigurirati omejitev velikosti osnovne datoteke, uporabite naslednji ukaz:

$ zmanjšanje -c

Da bi se izognili razmejitvi ali okrnitvi jedrne datoteke, se prepričajte, da je omejitev globalno nastavljena na »neomejeno« [1]. To lahko storite v /etc/security/limits.conf tako, da dodate naslednjo vrstico:

root - core neomejeno

* - jedro neomejeno

Zdaj se preprosto odjavite in znova prijavite, da bodo omejitve veljale za vašo sejo.

Prilagajanje lokacije jedrnega odlagališča

Ukaz “sysctl kernel.core_pattern” ali “/proc/sys/kernel/core_pattern” se običajno uporablja za nastavitev lokacije, kamor gredo izpisi jedra.

Vnesite naslednji ukaz za ogled nastavitev za trenutni vzorec jedra:

$ mačka / proc / sys / jedro / jedrni_vzorec

Običajno boste tukaj našli privzeto vrednost, navedeno kot »jedro«.

Uporaba “/proc/sys/kernel/core_pattern” za nastavitev lokacije izpisa jedra

Začasno preusmerimo odlagališča jedra na novo lokacijo, recimo /tmp/dumps/core, z uporabo datoteke »/proc/sys/kernel/core_pattern« [2] [3]. Zdaj sledite naslednjim korakom:

Korak 1 . Najprej naredite imenik za shranjevanje jedrnih izpisov:

$ mkdir -str / tmp / smetišče / jedra /

2. korak . Dajte potrebna dovoljenja temu imeniku:

$ chmod a+x / tmp / smetišče / jedra /

3. korak . Zdaj pa začasno nastavite pot jedrnega izpisa:

$ odmev '/tmp/dump/cores/core' | sudo majica / proc / sys / jedro / jedrni_vzorec

Še enkrat, globalno nastavite ulimit na neomejeno.

Tu lahko imenu datoteke dodamo nekaj drugih informacij, kot je prikazano v nadaljevanju:

$ odmev '/tmp/dump/cores/core_%e.%p_%t' | sudo majica / proc / sys / jedro / jedrni_vzorec

Vsak parameter, ki se tukaj uporablja, je mogoče definirati na naslednji način:

% in: za izvedljiv mapa ime

% p: za postopek id ali pid.

% t: za dodajanje časovnega žiga

4. korak . Nato moramo spremeniti datoteko »/etc/sysctl.conf«, da trajno uporabi prejšnje nastavitve. Odpri to datoteko:

$ sudo nano / itd / sysctl.conf

Zdaj tej datoteki dodajte naslednjo vrstico:

kernel.core_pattern = / tmp / smetišče / jedra / jedro

Namesto te vrstice lahko dodate tudi to:

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

To je vse, kar moramo narediti. Zdaj ustvarite izpis jedra, kot je omenjeno v razdelku »Ustvarjanje izpisa jedra«. Po tem lahko preverimo, ali je naša jedrna datoteka ustvarjena ali ne:

$ ls -l / tmp / smetišče / jedra /

Uporaba ukaza »Sysctl« za nastavitev lokacije izpisa jedra

Kot smo že omenili, lahko za isti namen uporabimo tudi ukaz sysctl. Spremenimo lokacijo jedrnega izpisa in format jedrne datoteke:

Korak 1 . Ustvarite nov imenik in podelite zahtevana dovoljenja:

$ mkdir -str / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

2. korak . Zdaj samo zaženite naslednji ukaz:

$ sudo sysctl -in kernel.core_pattern= / tmp / mydumps / jedro_ % in. % p_ % t

3. korak . Zdaj znova ustvarite izpis jedra, kot smo naredili prej. Po tem preverite, ali je jedrna datoteka ustvarjena ali ne:

$ ls -l / tmp / mydumps /

V sistemih Ubuntu se izpisi jedra pogosto pošljejo Appportu. Za sisteme, ki temeljijo na Red Hat, se lahko posreduje orodju za samodejno poročanje o napakah (ABRT). Sprva sem se soočil s težavo pri konfiguriranju lokacije izpisa jedra, zato sem moral popolnoma onemogočiti Appport v Ubuntu 20.04. Morda je to lahko tudi v primeru Red Hata in drugih.

Zaključek

V tem članku smo videli, kako lahko prilagodimo lokacijo odlagališč jedra v OS Ubuntu 20.04. Izpisi jedra vam lahko pomagajo ugotoviti, kaj je narobe, vendar so grozni zaradi uhajanja občutljivih podatkov. Izpise jedra je treba onemogočiti, kadar niso potrebni, in jih omogočiti samo, ko so nujno potrebni. V takem primeru preverite, ali so datoteke varno shranjene, tako da običajni uporabniki ne morejo dostopati do podatkov. Poleg tega morate ne glede na svojo odločitev vedno preizkusiti svojo konfiguracijo, da zagotovite, da deluje, kot je predvideno.

Različni operacijski sistemi različno obravnavajo izpise jedra in privzete konfiguracije. V zadnjem času je večina sistemov Linux sprejela systemd, kar je prineslo nekaj manjših prilagoditev pravil. Odvisno od tega, kako je vaš sistem konfiguriran, boste morda morali poiskati izpise jedra.