Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apa yang perlu dilakukan jika Linux tidak menjana fail teras

Apa yang perlu dilakukan jika Linux tidak menjana fail teras

藏色散人
藏色散人asal
2021-11-24 11:17:247686semak imbas

Penyelesaian untuk Linux tidak menghasilkan fail teras: 1. Semak sama ada direktori dump Teras wujud dan tetapkan proses untuk mempunyai kebenaran menulis pada direktori 2. Semak sama ada program perkhidmatan memanggil seteuid(); ia cukup besar Had saiz fail teras 4. Ubah suai profil, dsb.

Apa yang perlu dilakukan jika Linux tidak menjana fail teras

Persekitaran pengendalian artikel ini: sistem linux5.9.8, komputer Dell G3.

Apakah yang perlu saya lakukan jika Linux tidak menjana fail teras? Mengapa fail teras tidak dihasilkan?

1 Pastikan direktori tempat pembuangan Teras wujud dan proses itu mempunyai kebenaran menulis ke direktori.

Direktori tempat longgokan Teras disimpan ialah direktori semasa proses, yang secara amnya ialah direktori tempat proses itu terletak apabila arahan dikeluarkan untuk memulakan proses. Tetapi jika ia dimulakan melalui skrip, skrip boleh mengubah suai direktori semasa Dalam kes ini, direktori semasa sebenar proses tersebut akan berbeza daripada direktori di mana skrip tersebut pada asalnya dilaksanakan. Pada masa ini, anda boleh melihat sasaran pautan simbolik "/proc/277cd6bc5823f70298dd2fa0a1e5f686/cwd" untuk menentukan alamat direktori semasa sebenar proses tersebut. Proses yang dimulakan melalui perkhidmatan sistem juga boleh dilihat melalui kaedah ini.

2. Jika program memanggil seteuid()/setegid() untuk menukar pengguna atau kumpulan proses yang berkesan, sistem tidak akan menjana Core dump untuk proses ini secara lalai.

Banyak program perkhidmatan akan memanggil seteuid(), seperti MySQL Tidak kira pengguna yang anda gunakan untuk menjalankan mysqld_safe untuk memulakan MySQL, pengguna yang berkesan untuk mysqld sentiasa pengguna msyql. Jika anda pada asalnya menjalankan program sebagai pengguna A, tetapi pengguna program yang anda lihat dalam PS ialah B, maka proses ini telah dipanggil seteuid. Untuk membolehkan proses ini menjana Coredump, (echo "1" > /proc/sys/kernel/suid_dumpable) diperlukan.

3 Seperti yang semua orang tahu, ini adalah untuk menetapkan had saiz fail Teras yang cukup besar.

Saiz fail Teras yang dijana apabila program ranap ialah saiz memori yang diduduki oleh program semasa ia berjalan. Walau bagaimanapun, gelagat apabila program ranap tidak boleh dianggarkan berdasarkan gelagat biasa Contohnya, ralat seperti limpahan penimbal boleh menyebabkan timbunan dimusnahkan oleh itu, nilai pembolehubah tertentu sering diubah suai, dan kemudian atur cara menggunakan saiz ini untuk memohon memori Ini boleh menyebabkan atur cara menggunakan lebih banyak memori daripada biasa. Oleh itu, tidak kira betapa kecilnya memori yang diduduki oleh program semasa operasi biasa, adalah lebih baik untuk memastikan fail Teras dijana dan had saiz ditetapkan kepada tidak terhad.

4. Tambah dalam /etc/profile:

ulimit -c unlimited > /dev/null 2?&1

5. Program biasanya bermula pada CLI, jika ditetapkan:

ulimit -c unlimited

boleh menjadi Fail dump teras dihasilkan apabila program ditamatkan secara tidak dijangka. Tetapi untuk program yang berjalan dalam mod daemon, perbezaan utama daripada program yang dimulakan oleh CLI ialah persekitaran proses yang dijalankan, yang termasuk

cwd (direktori kerja semasa). Jika anda mentakrifkan format fail teras dalam laluan relatif, contohnya, takrifkan /proc/sys/kernel/core_pattern sebagai:

core-%e-%p-%t

, secara amnya, cwd bagi fail daemon ialah /, dan anda boleh lulus /proc/ e697f4ae81edfd237f155d6a0889cffc/cwd untuk melihat, biasanya bersambung ke direktori /. Dan jika pengguna tidak mempunyai kebenaran menulis untuk direktori ini, maka fail dump teras tidak akan dihasilkan.

Penyelesaian paling langsung ialah mengubah suai /proc/sys/kernel/core_pattern kepada laluan mutlak: /data/coredump/core-%e-%p-%t

dan pastikan Ini pada asasnya OK.

Ubah suai format fail dump teras dalam fail /proc/sys/kernel/core_pattern kepada laluan mutlak, contohnya:

/data/coredump/core-%e-%p-%t

Bilakah fail teras tidak dihasilkan?

Jangan jana fail teras di bawah syarat berikut:

(a) Proses adalah set-user-ID, dan pengguna semasa bukanlah pemilik fail program;

( b ) Proses ialah set-kumpulan-ID, dan pengguna semasa bukanlah pemilik kumpulan fail program;( c ) Pengguna tidak mempunyai kebenaran untuk menulis ke direktori kerja semasa;

( d) Fail terlalu besar. Kebenaran fail teras (dengan mengandaikan fail itu tidak wujud sebelum ini) biasanya dibaca/tulis pengguna, baca kumpulan dan bacaan lain.

Pembelajaran yang disyorkan: "

tutorial video linux

"

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika Linux tidak menjana fail teras. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn