Pagtatakda ng Linux Core ang Dump Location

Pagtatakda Ng Linux Core Ang Dump Location



Ano ang 'Core Dump' sa Linux?

Kapag hindi inaasahang lumabas ang isang proseso, madalas itong nag-iiwan ng 'core dump' sa iyong system. May kaugnay na mensahe na kasama nito. Ang isang core ay nagsisilbing isang tool sa pag-debug at isang imahe ng memorya na kasama rin ang impormasyon sa pag-debug. Kung isa kang user na ayaw mag-debug ng program, maaari mo lang tanggalin ang core:

$ rm core

Maaari mo ring iwanan ito nang hindi nagalaw, dahil ang lumang core ay na-overwrite kung ang isang bago ay itatapon. Maaari mo ring i-deactivate ang core dumping gamit ang sumusunod na command:







$ bumaba -c 0

Maaari naming buuin ang mga pangunahing dump on demand (halimbawa, sa pamamagitan ng debugger) o maaari silang awtomatikong gawin sa pagtatapos. Nagsisimula ang kernel ng mga core dump bilang resulta ng biglaang paglabas ng isang programa. Ang mga ito ay maaaring ipadala sa ilang iba pang programa (tulad ng systemd-coredump) para sa mga karagdagang operasyon.



Gaya ng kadalasang nangyayari, mayroong isang trade-off sa pagitan ng pagkolekta ng data para sa mas mahusay na katatagan at pag-troubleshoot at ang panganib na ibunyag ang sensitibong impormasyon mula sa data ng pag-debug.



Ano ang Sasaklawin Natin?

Sa artikulong ito, makikita natin kung paano itakda ang lokasyon ng mga core dump sa Ubuntu 20.04 OS. Magsimula tayo ngayon.





Pagbuo ng Core Dump

Tingnan muna natin kung paano tayo makakabuo ng core dump. Para dito, ginagamit namin ang Linux kill command. Una, hanapin ang PID ng isang proseso at pagkatapos ay magpadala ng kill signal. Halimbawa, simulan natin ang proseso ng pagtulog at pagkatapos ay patayin ito gamit ang PID nito:

$ matulog 500

$ pumatay -s SIGTRAP $ ( mahigpit na pagkakahawak matulog )



Ngayon na natutunan mo kung paano bumuo ng isang pangunahing dump, maaari mo itong gamitin sa mga sumusunod na kasunod na seksyon.

Saan sila pumunta?

Ang core dump file ay pinangalanang core.pid bilang default at nilikha sa gumaganang direktoryo ng application. Dito, ang pid ay ang process id.

Gamit ang ulimit tool, maaari mong makuha o baguhin ang mga limitasyon ng mapagkukunan ng system para sa kasalukuyang shell at anumang mga shell na kasunod nito. Upang i-verify o i-configure ang limitasyon sa laki ng pangunahing file, gamitin ang sumusunod na command:

$ bumaba -c

Upang maiwasan ang pag-delimiting o pagputol sa pangunahing file, tiyaking ang limitasyon ay nakatakda sa buong mundo sa 'walang limitasyon' [1]. Magagawa ito sa /etc/security/limits.conf sa pamamagitan ng pagdaragdag ng sumusunod na linya:

ugat - core walang limitasyon

* - walang limitasyong core

Ngayon, mag-log out lang at mag-log in muli para sa mga limitasyong ilalapat sa iyong session.

Pag-customize sa Lokasyon ng Core Dump

Ang command na 'sysctl kernel.core_pattern' o ang '/proc/sys/kernel/core_pattern' ay karaniwang ginagamit upang itakda ang lokasyon kung saan napupunta ang mga core dump.

Ipasok ang sumusunod na command upang makita ang mga setting para sa kasalukuyang core pattern:

$ pusa / proc / sys / kernel / core_pattern

Karaniwan, makikita mo ang default na halaga na nakalista bilang 'core' dito.

Gamit ang “/proc/sys/kernel/core_pattern” para Itakda ang Lokasyon ng Core Dump

Pansamantala nating i-redirect ang mga core dump sa isang bagong lokasyon, sabihin nating /tmp/dumps/core, gamit ang “/proc/sys/kernel/core_pattern” na file [2] [3]. Ngayon, sundin ang mga sumusunod na hakbang:

Hakbang 1 . Una, gumawa ng isang direktoryo upang mag-imbak ng mga pangunahing dump:

$ mkdir -p / tmp / tambakan / mga core /

Hakbang 2 . Ibigay ang mga kinakailangang pahintulot sa direktoryong ito:

$ chmod a+x / tmp / tambakan / mga core /

Hakbang 3 . Ngayon, pansamantalang itakda ang core dump path:

$ echo '/tmp/dump/cores/core' | sudo katangan / proc / sys / kernel / core_pattern

Muli, itakda sa buong mundo ang ulimit sa unlimited.

Dito, maaari kaming magdagdag ng ilang iba pang impormasyon sa pangalan ng file tulad ng ipinapakita sa sumusunod:

$ echo '/tmp/dump/cores/core_%e.%p_%t' | sudo katangan / proc / sys / kernel / core_pattern

Ang bawat parameter na ginagamit dito ay maaaring tukuyin bilang mga sumusunod:

% at: para sa maipapatupad file pangalan

% p: para sa proseso id o pid.

% t: para sa pagdaragdag ng timestamp

Hakbang 4 . Susunod, kailangan nating baguhin ang '/etc/sysctl.conf' na file upang permanenteng ilapat ang mga nakaraang setting. Buksan ang file na ito:

$ sudo nano / atbp / sysctl.conf

Ngayon, idagdag ang sumusunod na linya sa file na ito:

kernel.core_pattern = / tmp / tambakan / mga core / core

Gayundin, sa halip na linyang ito, maaari mong idagdag ito:

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

Iyon lang ang kailangan nating gawin. Ngayon, bumuo ng core dump gaya ng nabanggit sa seksyong 'Pagbuo ng Core Dump'. Pagkatapos nito, maaari naming suriin kung ang aming pangunahing file ay nabuo o hindi:

$ ls -l / tmp / tambakan / mga core /

Gamit ang 'Sysctl' Command para Itakda ang Lokasyon ng Core Dump

Gaya ng nabanggit kanina, maaari rin nating gamitin ang sysctl command para sa parehong layunin. Baguhin natin ang lokasyon ng core dump at ang format ng core file:

Hakbang 1 . Lumikha ng bagong direktoryo at ibigay ang mga kinakailangang pahintulot:

$ mkdir -p / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Hakbang 2 . Ngayon, patakbuhin lang ang sumusunod na command:

$ sudo sysctl -sa kernel.core_pattern= / tmp / mydumps / core_ % at. % p_ % t

Hakbang 3 . Ngayon, muli, buuin ang core dump gaya ng ginawa namin kanina. Pagkatapos nito, suriin kung nabuo ang core file o hindi:

$ ls -l / tmp / mydumps /

Sa mga Ubuntu system, ang mga core dump ay madalas na ipinapadala sa Apport. Para sa mga sistemang nakabatay sa Red Hat, maaari itong ipasa sa Automatic Bug Reporting Tool (ABRT). Sa una, nahaharap ako sa isang problema sa pag-configure ng pangunahing lokasyon ng dump, kaya kinailangan kong ganap na huwag paganahin ang Apport sa Ubuntu 20.04. Marahil, ito rin ay maaaring mangyari sa Red Hat at sa iba pa.

Konklusyon

Sa artikulong ito, nakita namin kung paano namin mako-customize ang lokasyon ng mga core dump sa Ubuntu 20.04 OS. Makakatulong sa iyo ang mga core dump na malaman kung ano ang mali, ngunit nakakatakot ang mga ito para sa paglabas ng sensitibong data. Dapat na hindi pinagana ang mga core dump sa tuwing hindi kinakailangan ang mga ito at i-enable lang kapag talagang kinakailangan. Sa ganoong sitwasyon, kumpirmahin na ang mga file ay ligtas na naka-imbak upang ang mga ordinaryong gumagamit ay hindi ma-access ang data. Higit pa rito, anuman ang iyong desisyon, dapat mong palaging subukan ang iyong configuration upang matiyak na ito ay gumagana ayon sa nilalayon.

Ang mga core dump at default na configuration ay pinangangasiwaan ng iba't ibang operating system. Sa mga nagdaang panahon, karamihan sa mga sistema ng Linux ay gumagamit ng systemd, na nagdulot ng ilang maliliit na pagsasaayos ng panuntunan. Depende sa kung paano naka-configure ang iyong system, maaaring kailanganin mong maghanap ng mga pangunahing dump.