Saya memiliki pekerjaan pemula yang kadang-kadang crash dengan kesalahan segmentasi, dan saya punya beberapa pertanyaan tentang dump inti.
Pertama, saya harus menambahkan bait:
limit core unlimited unlimited
Apakah ada kerugian untuk memungkinkan ukuran inti tidak terbatas? Apakah batas yang terbatas akan lebih baik?
Kedua, kemana file inti akan pergi? Jika defaultnya bukan tempat standar atau logis, bagaimana saya membuatnya muncul di tempat lain?
upstart
segmentation-fault
ulimit
brooks94
sumber
sumber
Jawaban:
Tempat pembuangan inti tidak terbatas tidak disarankan dalam kebanyakan situasi, tetapi secara teknis baik-baik saja. Core dump hanya memiliki "semua memori" yang dimiliki proses saat ini. Jadi paling-paling hanya bisa sebesar ram + swap Anda. Semoga Anda memiliki lebih banyak ruang kosong daripada itu.
Dalam kehidupan nyata mereka harus "kecil-ish" dibandingkan dengan total ram + swap.
File "harus" berakhir di "direktori saat ini". Untuk tugas pemula yang tidak chdir itu biasanya /. Jika mereka mengubah direktori maka Anda sendiri untuk memburu mereka. Namun Anda dapat membuat kode path untuk mereka.
Anda harus dapat memeriksa
/proc/sys/kernel/core_pattern
"pola". Jika Anda mengatur polanya menjadi seperti ituecho "/var/log/core" > /proc/sys/kernel/core_pattern
maka semua inti Anda akan berakhir di / var / logsumber
File inti adalah gambar dari suatu proses yang dibuat oleh sistem operasi ketika proses berakhir secara tak terduga. File-file inti dibuat ketika sebuah program melakukan kesalahan karena bug, atau pelanggaran terhadap CPU atau mekanisme perlindungan memori. Sistem operasi membunuh program dan membuat file inti.
File ini bisa sangat berguna dalam menentukan apa yang salah dengan suatu proses. Produksi file inti dapat diaktifkan secara default, tergantung pada distribusi dan versi Linux yang Anda miliki.
Jika Anda tidak ingin file inti sama sekali, setel "ulimit -c 0" di file permulaan Anda. Itu default pada banyak sistem; di dalam
/etc/profile
kamu dapat menemukanKarena file terpotong tidak ada gunanya, atur ukuran file inti Linux menjadi "tidak terbatas".
File inti ditempatkan ke direktori proses saat ini, tunduk pada izin menulis untuk proses JVM dan ruang disk kosong.
Bergantung pada level kernel, opsi kernel yang berguna tersedia yang memberi corefiles nama yang lebih bermakna. Sebagai pengguna root, opsi sysctl -w kernel.core_users_pid = 1 memastikan bahwa file inti memiliki nama bentuk "Core.PID".
Jika Anda menginginkan file inti, Anda perlu meresetnya di .bash_profile Anda sendiri:
akan memungkinkan file inti tetapi batasi hingga 50.000 byte.
Anda memiliki kontrol lebih besar terhadap file inti di
/proc/sys/kernel/
Misalnya, Anda dapat menghapus tag pada pid dengan
File inti kemudian akan dinamai "inti". Orang-orang melakukan hal-hal seperti itu sehingga pengguna dapat memilih untuk meletakkan file yang tidak bisa ditulis bernama "core" di direktori di mana mereka tidak ingin menghasilkan dump inti. Itu bisa berupa direktori (mkdir core) atau file (sentuh inti; chmod 000 inti).
Tapi mungkin yang lebih menarik yang bisa Anda lakukan:
Semua corefiles kemudian dilempar ke
/tmp/corefiles
(jangan mengubah core_uses_pid jika Anda melakukan ini).Uji ini dengan skrip sederhana:
Di bawah Ubuntu, pembuatan file inti dikendalikan melalui file
/etc/default/collectd
. Anda dapat mengaktifkan pembuatan dump inti dengan menetapkan:Menemukan file inti
Setelah daemon macet, sebuah file akan dibuat di direktori kerjanya saat ini. Secara default, ini
pkglocalstatedir
, yaituprefix/var/lib/collectd
. Jika Anda menginstal paket, kemungkinan besar direktori ini/var/lib/collectd
.Sumber: AP Lawrence, dan IBM
sumber