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.
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/
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/
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 linuxAtas 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!