„Linux Core“ išmetimo vietos nustatymas

Linux Core Ismetimo Vietos Nustatymas



Kas yra „Core Dump“ sistemoje „Linux“?

Kai procesas netikėtai baigiasi, jis dažnai palieka „pagrindinį sąvartyną“ jūsų sistemoje. Kartu yra atitinkama žinutė. Šerdis tarnauja kaip derinimo įrankis ir yra atminties vaizdas, kuriame taip pat yra derinimo informacija. Jei esate vartotojas, kuris nenori derinti programos, galite tiesiog ištrinti pagrindinę dalį:

$ rm šerdis

Taip pat galite palikti jį nepaliestą, nes senoji šerdis perrašoma, jei kada nors išleidžiama nauja. Taip pat galite išjungti šerdies išmetimą naudodami šią komandą:







$ mažinti -c 0

Galime generuoti pagrindinius išmetimus pagal poreikį (pavyzdžiui, naudodami derintuvą) arba juos galima sukurti automatiškai nutraukus. Branduolys inicijuoja branduolių išmetimus dėl staigaus programos išėjimo. Jie gali būti siunčiami į kurią nors kitą programą (pvz., systemd-coredump) papildomoms operacijoms atlikti.



Kaip paprastai, yra kompromisas tarp duomenų rinkimo siekiant didesnio stabilumo ir trikčių šalinimo bei rizikos atskleisti neskelbtiną informaciją iš derinimo duomenų.



Ką mes padengsime?

Šiame straipsnyje pamatysime, kaip nustatyti pagrindinių išmetimų vietą Ubuntu 20.04 OS. Pradėkime dabar.





Pagrindinės sąvartyno generavimas

Pirmiausia pažiūrėkime, kaip galime sukurti pagrindinį sąvartyną. Tam naudojame Linux nužudymo komandą. Pirmiausia suraskite proceso PID ir tada išsiųskite nužudymo signalą. Pavyzdžiui, pradėkime miego procesą ir užmuškime jį naudodami PID:

$ miegoti 500

$ nužudyti -s SIGTRAP $ ( sukibimas miegoti )



Dabar, kai sužinojote, kaip sukurti pagrindinį iškeltą, galite jį naudoti kituose tolesniuose skyriuose.

Kur jie eina?

Pagrindinis iškelties failas pagal numatytuosius nustatymus vadinamas core.pid ir sukuriamas programos darbiniame kataloge. Čia pid yra proceso ID.

Naudodami įrankį ulimit galite gauti arba pakeisti dabartinio apvalkalo ir bet kokių po jo esančių apvalkalų sistemos išteklių apribojimus. Norėdami patikrinti arba sukonfigūruoti pagrindinio failo dydžio apribojimą, naudokite šią komandą:

$ mažinti -c

Kad išvengtumėte pagrindinio failo atribojimo ar sutrumpinimo, įsitikinkite, kad riba visame pasaulyje nustatyta į „neribota“ [1]. Tai galima padaryti aplanke /etc/security/limits.conf pridedant šią eilutę:

šaknis – šerdis neribota

* - branduolys neribotas

Dabar tiesiog atsijunkite ir vėl prisijunkite, kad seansui būtų taikomi apribojimai.

Šerdies sąvartyno vietos pritaikymas

Komanda „sysctl kernel.core_pattern“ arba „/proc/sys/kernel/core_pattern“ paprastai naudojama norint nustatyti vietą, kur nukreipiami pagrindiniai išmetimai.

Įveskite šią komandą, kad pamatytumėte dabartinio pagrindinio modelio nustatymus:

$ katė / proc / sys / branduolys / core_pattern

Paprastai čia rasite numatytąją reikšmę, nurodytą kaip „pagrindinis“.

Naudodami „/proc/sys/kernel/core_pattern“ nustatykite pagrindinę išrašymo vietą

Laikinai nukreipkime pagrindinius iškeltus į naują vietą, tarkime, /tmp/dumps/core, naudodami failą „/proc/sys/kernel/core_pattern“ [2] [3]. Dabar atlikite šiuos veiksmus:

1 žingsnis . Pirma, sukurkite katalogą, kuriame saugomi pagrindiniai iškeltuvai:

$ mkdir -p / tmp / sąvartynas / šerdys /

2 žingsnis . Suteikite reikiamus leidimus šiam katalogui:

$ chmod a+x / tmp / sąvartynas / šerdys /

3 veiksmas . Dabar laikinai nustatykite pagrindinį iškelties kelią:

$ aidas „/tmp/dump/cores/core“ | sudo tee / proc / sys / branduolys / core_pattern

Vėlgi, visame pasaulyje nustatykite neribotą ribą.

Čia prie failo pavadinimo galime pridėti kitos informacijos, kaip parodyta toliau:

$ aidas „/tmp/dump/cores/core_%e.%p_%t“ | sudo tee / proc / sys / branduolys / core_pattern

Kiekvienas čia naudojamas parametras gali būti apibrėžtas taip:

% ir: dėl vykdomasis failą vardas

% p: dėl procesas id arba pid.

% t: dėl pridedant laiko žymą

4 veiksmas . Tada turime pakeisti „/etc/sysctl.conf“ failą, kad visam laikui būtų taikomi ankstesni nustatymai. Atidarykite šį failą:

$ sudo nano / ir tt / sysctl.conf

Dabar prie šio failo pridėkite šią eilutę:

kernel.core_pattern = / tmp / sąvartynas / šerdys / šerdis

Be to, vietoj šios eilutės galite pridėti šią:

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

Tai viskas, ką turime padaryti. Dabar sugeneruokite šerdies iškeltą, kaip nurodyta skyriuje „Pagrindinio iškelto generavimas“. Po to galime patikrinti, ar mūsų pagrindinis failas sugeneruotas, ar ne:

$ ls -l / tmp / sąvartynas / šerdys /

Naudodami „Sysctl“ komandą, norėdami nustatyti pagrindinę išmetimo vietą

Kaip minėta anksčiau, tuo pačiu tikslu taip pat galime naudoti komandą sysctl. Pakeiskime pagrindinės iškelties vietą ir pagrindinio failo formatą:

1 žingsnis . Sukurkite naują katalogą ir suteikite reikiamus leidimus:

$ mkdir -p / tmp / mano dumps

$ chmod a+rwx / tmp / mano dumps

2 žingsnis . Dabar tiesiog paleiskite šią komandą:

$ sudo sysctl kernel.core_pattern= / tmp / mano dumps / core_ % ir. % p_ % t

3 veiksmas . Dabar vėl generuokite pagrindinį išmetimą, kaip darėme anksčiau. Po to patikrinkite, ar pagrindinis failas sugeneruotas, ar ne:

$ ls -l / tmp / mano dumps /

„Ubuntu“ sistemose pagrindinės iškrovos dažnai siunčiamos „Apport“. „Red Hat“ pagrįstose sistemose jis gali būti perduotas automatiniam klaidų pranešimo įrankiui (ABRT). Iš pradžių susidūriau su problema konfigūruodamas pagrindinio išmetimo vietą, todėl turėjau visiškai išjungti „Apport“ Ubuntu 20.04. Galbūt tai taip pat gali būti „Red Hat“ ir kitų atveju.

Išvada

Šiame straipsnyje matėme, kaip galime tinkinti pagrindinių išmetimų vietą Ubuntu 20.04 OS. Pagrindinės sąvartynos gali padėti išsiaiškinti, kas negerai, tačiau jos yra baisios dėl neskelbtinų duomenų nutekėjimo. Šerdies išmetimai turėtų būti išjungti, kai jie nereikalingi, ir įjungti tik tada, kai tai absoliučiai būtina. Esant tokiai situacijai, įsitikinkite, kad failai yra saugiai saugomi, kad paprasti vartotojai negalėtų prieiti prie duomenų. Be to, nepaisant jūsų sprendimo, visada turėtumėte išbandyti savo konfigūraciją, kad įsitikintumėte, jog ji veikia taip, kaip numatyta.

Įvairios operacinės sistemos skirtingai apdoroja pagrindinius išmetimus ir numatytąsias konfigūracijas. Pastaruoju metu daugumoje „Linux“ sistemų buvo įdiegta „systemd“, todėl buvo šiek tiek pakoreguotos taisyklės. Atsižvelgiant į tai, kaip sukonfigūruota jūsų sistema, gali tekti ieškoti pagrindinių sąvartynų.