Mengatur Linux Core ke Lokasi Dump

Mengatur Linux Core Ke Lokasi Dump



Apa itu 'Core Dump' di Linux?

Ketika sebuah proses tiba-tiba keluar, sering kali meninggalkan 'core dump' di sistem Anda. Ada pesan yang relevan yang disertakan dengan ini. Inti berfungsi sebagai alat debugging dan merupakan gambar memori yang juga menyertakan informasi debug. Jika Anda adalah pengguna yang tidak ingin men-debug suatu program, Anda dapat menghapus intinya saja:

$ rm inti

Anda juga dapat membiarkannya tidak tersentuh, karena inti lama akan ditimpa jika inti baru dibuang. Anda juga dapat menonaktifkan dumping inti dengan perintah berikut:







$ mengurangi -c 0

Kami dapat menghasilkan dump inti sesuai permintaan (misalnya, melalui debugger) atau dapat diproduksi secara otomatis saat penghentian. Kernel memulai dump inti sebagai konsekuensi dari program yang tiba-tiba keluar. Ini dapat dikirim ke beberapa program lain (seperti systemd-coredump) untuk operasi tambahan.



Seperti biasanya, ada trade-off antara pengumpulan data untuk stabilitas dan pemecahan masalah yang lebih baik dan risiko mengungkap informasi sensitif dari data debug.



Apa yang Akan Kami Bahas?

Pada artikel ini, kita akan melihat cara mengatur lokasi dump inti di OS Ubuntu 20.04. Mari kita mulai sekarang.





Menghasilkan Core Dump

Pertama mari kita lihat bagaimana kita bisa menghasilkan core dump. Untuk ini, kami menggunakan perintah kill Linux. Pertama, temukan PID dari suatu proses dan kemudian kirimkan sinyal mati. Misalnya, mari kita mulai proses tidur dan kemudian matikan dengan PID-nya:

$ tidur 500

$ membunuh -s SIGTRAP $ ( pegangan tidur )



Sekarang setelah Anda mempelajari cara membuat core dump, Anda dapat menggunakannya di bagian selanjutnya berikut ini.

Kemana mereka pergi?

File dump inti diberi nama core.pid secara default dan dibuat di direktori kerja aplikasi. Di sini, pid adalah id proses.

Dengan alat ulimit, Anda bisa mendapatkan atau mengubah batas sumber daya sistem untuk shell saat ini dan shell apa pun setelahnya. Untuk memverifikasi atau mengonfigurasi batas ukuran file inti, gunakan perintah berikut:

$ mengurangi -c

Untuk menghindari pembatasan atau pemotongan file inti, pastikan batasnya disetel secara global ke 'tidak terbatas' [1]. Ini dapat dilakukan di /etc/security/limits.conf dengan menambahkan baris berikut:

root - inti tidak terbatas

* - inti tidak terbatas

Sekarang, cukup logout dan login kembali agar batasan diterapkan ke sesi Anda.

Menyesuaikan Lokasi Core Dump

Perintah “sysctl kernel.core_pattern” atau “/proc/sys/kernel/core_pattern” biasanya digunakan untuk mengatur lokasi tempat pembuangan inti.

Masukkan perintah berikut untuk melihat pengaturan pola inti saat ini:

$ kucing / prok / sys / inti / core_pattern

Biasanya, Anda akan menemukan nilai default yang tercantum sebagai 'inti' di sini.

Menggunakan “/proc/sys/kernel/core_pattern” untuk Mengatur Lokasi Core Dump

Mari kita arahkan sementara dump inti ke lokasi baru, misalnya /tmp/dumps/core, menggunakan file “/proc/sys/kernel/core_pattern” [2] [3]. Sekarang, ikuti langkah-langkah berikut:

Langkah 1 . Pertama, buat direktori untuk menyimpan core dumps:

$ mkdir -p / tmp / membuang / core /

Langkah 2 . Berikan izin yang diperlukan ke direktori ini:

$ chmod a+x / tmp / membuang / core /

Langkah 3 . Sekarang, setel sementara jalur dump inti:

$ gema '/tmp/dump/core/core' | sudo tee / prok / sys / inti / core_pattern

Sekali lagi, atur ulimit secara global menjadi tidak terbatas.

Di sini, kita dapat menambahkan beberapa informasi lain ke nama file seperti yang ditunjukkan berikut ini:

$ gema '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / prok / sys / inti / core_pattern

Setiap parameter yang digunakan di sini dapat didefinisikan sebagai berikut:

% dan: untuk dapat dieksekusi mengajukan nama

% p: untuk proses Indo atau pid.

% t: untuk menambahkan stempel waktu

Langkah 4 . Selanjutnya, kita harus mengubah file “/etc/sysctl.conf” untuk menerapkan pengaturan sebelumnya secara permanen. Buka file ini:

$ sudo nano / dll. / sysctl.conf

Sekarang, tambahkan baris berikut ke file ini:

kernel.core_pattern = / tmp / membuang / core / inti

Selain itu, alih-alih baris ini, Anda dapat menambahkan ini:

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

Hanya itu yang perlu kita lakukan. Sekarang, hasilkan core dump seperti yang disebutkan di bagian 'Menghasilkan Core Dump'. Setelah ini, kami dapat memeriksa apakah file inti kami dibuat atau tidak:

$ ls -l / tmp / membuang / core /

Menggunakan Perintah 'Sysctl' untuk Mengatur Lokasi Core Dump

Seperti disebutkan sebelumnya, kita juga bisa menggunakan perintah sysctl untuk tujuan yang sama. Mari ubah lokasi dump inti dan format file inti:

Langkah 1 . Buat direktori baru dan berikan izin yang diperlukan:

$ mkdir -p / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Langkah 2 . Sekarang, jalankan saja perintah berikut:

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

Langkah 3 . Sekarang, sekali lagi, hasilkan core dump seperti yang kita lakukan sebelumnya. Setelah ini, periksa apakah file inti dibuat atau tidak:

$ ls -l / tmp / mydumps /

Pada sistem Ubuntu, core dump sering dikirim ke Apport. Untuk sistem berbasis Red Hat, mungkin diteruskan ke Alat Pelaporan Bug Otomatis (ABRT). Awalnya, saya menghadapi masalah dalam mengonfigurasi lokasi core dump, jadi saya harus menonaktifkan Apport sepenuhnya di Ubuntu 20.04. Mungkin, ini juga yang terjadi pada Red Hat dan lainnya.

Kesimpulan

Pada artikel ini, kita telah melihat bagaimana kita dapat menyesuaikan lokasi dump inti di OS Ubuntu 20.04. Core dumps dapat membantu Anda mengetahui apa yang salah, tetapi sangat buruk karena membocorkan data sensitif. Core dumps harus dinonaktifkan kapan pun tidak diperlukan dan hanya diaktifkan jika benar-benar diperlukan. Dalam situasi seperti itu, konfirmasikan bahwa file disimpan dengan aman sehingga pengguna biasa tidak dapat mengakses data tersebut. Selain itu, terlepas dari keputusan Anda, Anda harus selalu menguji konfigurasi Anda untuk memastikannya beroperasi sebagaimana mestinya.

Core dump dan konfigurasi default ditangani secara berbeda oleh berbagai sistem operasi. Baru-baru ini, sebagian besar sistem Linux telah mengadopsi systemd, yang telah menghasilkan beberapa penyesuaian aturan kecil. Bergantung pada bagaimana sistem Anda dikonfigurasi, Anda mungkin perlu mencari dump inti.