Menetapkan Linux Core the Dump Location

Menetapkan Linux Core The Dump Location



Apakah 'Core Dump' dalam Linux?

Apabila proses keluar secara tidak dijangka, ia kerap meninggalkan 'pembuangan teras' dalam sistem anda. Terdapat mesej yang berkaitan yang disertakan dengan ini. Teras berfungsi sebagai alat penyahpepijatan dan merupakan imej memori yang turut merangkumi maklumat penyahpepijatan. Jika anda pengguna yang tidak mahu menyahpepijat atur cara, anda hanya boleh memadamkan teras:

$ rm teras

Anda juga boleh membiarkannya tidak disentuh, kerana teras lama akan ditimpa jika yang baharu pernah dibuang. Anda juga boleh menyahaktifkan lambakan teras dengan arahan berikut:







$ berkurangan -c 0

Kami boleh menjana lambakan teras atas permintaan (contohnya, melalui penyahpepijat) atau ia boleh dihasilkan secara automatik selepas penamatan. Kernel memulakan pembuangan teras sebagai akibat daripada keluar mengejut program. Ini mungkin dihantar ke beberapa program lain (seperti systemd-coredump) untuk operasi tambahan.



Seperti yang biasa berlaku, terdapat pertukaran antara pengumpulan data untuk kestabilan dan penyelesaian masalah yang lebih baik dan risiko mendedahkan maklumat sensitif daripada data nyahpepijat.



Apa yang Akan Kami Tutup?

Dalam artikel ini, kita akan melihat cara menetapkan lokasi pembuangan teras pada OS Ubuntu 20.04. Mari mulakan sekarang.





Menjana Lambakan Teras

Mari kita lihat dahulu cara kita boleh menjana pembuangan teras. Untuk ini, kami menggunakan perintah bunuh Linux. Mula-mula, cari PID proses dan kemudian hantar isyarat bunuh. Sebagai contoh, mari kita mulakan proses tidur dan kemudian bunuhnya dengan PIDnya:

$ tidur 500

$ bunuh -s SIGTRAP $ ( cengkaman tidur )



Memandangkan anda telah mempelajari cara menjana longgokan teras, anda boleh menggunakannya dalam bahagian seterusnya yang berikut.

Ke mana mereka pergi?

Fail dump teras dinamakan core.pid secara lalai dan dicipta dalam direktori kerja aplikasi. Di sini, pid ialah id proses.

Dengan alat ulimit, anda boleh mendapatkan atau menukar had sumber sistem untuk shell semasa dan mana-mana shell yang datang selepasnya. Untuk mengesahkan atau mengkonfigurasi had saiz fail teras, gunakan arahan berikut:

$ berkurangan -c

Untuk mengelakkan pengehadan atau pemangkasan fail teras, pastikan had ditetapkan secara global kepada 'tidak terhad' [1]. Ini boleh dilakukan dalam /etc/security/limits.conf dengan menambah baris berikut:

akar - teras tanpa had

* - teras tanpa had

Sekarang, hanya log keluar dan log masuk semula untuk had yang akan digunakan pada sesi anda.

Menyesuaikan Lokasi Longgokan Teras

Perintah 'sysctl kernel.core_pattern' atau '/proc/sys/kernel/core_pattern' biasanya digunakan untuk menetapkan lokasi tempat pembuangan teras pergi.

Masukkan arahan berikut untuk melihat tetapan untuk corak teras semasa:

$ kucing / proc / sys / isirong / corak_teras

Biasanya, anda akan menemui nilai lalai yang disenaraikan sebagai 'teras' di sini.

Menggunakan “/proc/sys/kernel/core_pattern” untuk Menetapkan Lokasi Longgokan Teras

Mari kita ubah hala pembuangan teras ke lokasi baharu buat sementara waktu, katakan /tmp/dumps/core, menggunakan fail “/proc/sys/kernel/core_pattern” [2] [3]. Sekarang, ikuti langkah berikut:

Langkah 1 . Mula-mula, buat direktori untuk menyimpan pembuangan teras:

$ mkdir -hlm / tmp / pembuangan / teras /

Langkah 2 . Berikan kebenaran yang diperlukan kepada direktori ini:

$ chmod a+x / tmp / pembuangan / teras /

Langkah 3 . Sekarang, tetapkan laluan pembuangan teras buat sementara waktu:

$ bergema '/tmp/dump/cores/core' | sudo tee / proc / sys / isirong / corak_teras

Sekali lagi, secara global tetapkan ulimit kepada tidak terhad.

Di sini, kami boleh menambahkan beberapa maklumat lain pada nama fail seperti yang ditunjukkan dalam yang berikut:

$ bergema '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / sys / isirong / corak_teras

Setiap parameter yang digunakan di sini boleh ditakrifkan seperti berikut:

% dan: untuk boleh dilaksanakan fail nama

% p: untuk proses ID atau pid.

% t: untuk menambah cap masa

Langkah 4 . Seterusnya, kita perlu menukar fail '/etc/sysctl.conf' untuk menggunakan tetapan sebelumnya secara kekal. Buka fail ini:

$ sudo nano / dan lain-lain / sysctl.conf

Sekarang, tambahkan baris berikut pada fail ini:

kernel.core_pattern = / tmp / pembuangan / teras / teras

Selain daripada baris ini, anda boleh menambah ini:

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

Itu sahaja yang perlu kita lakukan. Sekarang, hasilkan longgokan teras seperti yang dinyatakan dalam bahagian 'Menjana Longgokan Teras'. Selepas ini, kami boleh menyemak sama ada fail teras kami dijana atau tidak:

$ ls -l / tmp / pembuangan / teras /

Menggunakan Perintah 'Sysctl' untuk Menetapkan Lokasi Longgokan Teras

Seperti yang dinyatakan sebelum ini, kita juga boleh menggunakan arahan sysctl untuk tujuan yang sama. Mari tukar lokasi pembuangan teras dan format fail teras:

Langkah 1 . Buat direktori baharu dan berikan kebenaran yang diperlukan:

$ mkdir -hlm / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Langkah 2 . Sekarang, jalankan arahan berikut:

$ sudo sysctl -dalam kernel.core_pattern= / tmp / mydumps / teras_ % dan. % p_ % t

Langkah 3 . Sekarang, sekali lagi, jana longgokan teras seperti yang kita lakukan sebelum ini. Selepas ini, semak sama ada fail teras dijana atau tidak:

$ ls -l / tmp / mydumps /

Pada sistem Ubuntu, pembuangan teras sering dihantar ke Apport. Untuk sistem berasaskan Red Hat, ia mungkin dimajukan ke Alat Pelaporan Pepijat Automatik (ABRT). Pada mulanya, saya menghadapi masalah dalam mengkonfigurasi lokasi pembuangan teras, jadi saya terpaksa melumpuhkan sepenuhnya Apport pada Ubuntu 20.04. Mungkin, ini juga mungkin berlaku dengan Red Hat dan lain-lain.

Kesimpulan

Dalam artikel ini, kami telah melihat bagaimana kami boleh menyesuaikan lokasi pembuangan teras pada OS Ubuntu 20.04. Lambakan teras boleh membantu anda mengetahui apa yang salah, tetapi ia adalah buruk untuk membocorkan data sensitif. Lambakan teras harus dilumpuhkan apabila ia tidak diperlukan dan hanya didayakan apabila benar-benar perlu. Dalam keadaan sedemikian, sahkan bahawa fail disimpan dengan selamat supaya pengguna biasa tidak dapat mengakses data. Tambahan pula, tanpa mengira keputusan anda, anda harus sentiasa menguji konfigurasi anda untuk memastikan ia beroperasi seperti yang dimaksudkan.

Lambakan teras dan konfigurasi lalai dikendalikan secara berbeza oleh pelbagai sistem pengendalian. Sejak kebelakangan ini, kebanyakan sistem Linux telah menggunakan systemd, yang telah membawa beberapa pelarasan peraturan kecil. Bergantung pada cara sistem anda dikonfigurasikan, anda mungkin perlu mencari pembuangan teras.