Tại sao systemd-coredump lưu trữ kết xuất trong bộ nhớ?


7

Tôi chỉ nhận thấy rằng hầu hết bộ nhớ của tôi đã bị tắc nghẽn bởi một vài quá trình mà tôi đã giết gần đây. Tôi đã có một quy trình xử lý hệ thống đang chạy cho mỗi quy trình bị sự cố (thường các quy trình là google-chrome, mà tôi đã buộc phải thoát, điều này giải thích mức tiêu thụ bộ nhớ lớn).

Những gì tôi muốn biết là tại sao thay vì bỏ lõi của quá trình bị hỏng vào đĩa, một quy trình mới chứa toàn bộ lõi trong ram đang được bắt đầu.

Là lỗi cấu hình của tôi hoặc nó được cho là theo cách này? Nếu vậy làm thế nào để tôi thay đổi hành vi?

Hiện tại tôi đã vô hiệu hóa việc lưu trữ kết xuất lõi bằng cách liên kết /dev/nullđến /etc/sysctl.d/coredump.conf, mặc dù tôi không thấy các bãi chứa lõi, nhưng vẫn muốn giữ cho nó được kích hoạt. Bất kỳ ý tưởng / gợi ý sẽ được đánh giá cao.

(Vấn đề cũng được đăng tại: https://bbs.archlinux.org/viewtopic.php?pid=1246237 )


Quan trọng hơn có thể là lý do tại sao Chrome của bạn nhận được SIGSEGV (11). Bạn có thể muốn bắt đầu với việc chạy memtest86và xác minh bộ nhớ của bạn trước khi giải quyết điều này. man coresẽ giải thích nhiều tùy chọn có sẵn cho các bãi chứa lõi.
bsd

@bdowning Vâng trong những ngày đó (khi tôi đặt câu hỏi) Tôi sẽ buộc tiêu diệt chrome và các quy trình khác (mà btw sẽ chạy khá tốt). Vì vậy, tôi nghĩ rằng điều này sẽ tạo ra bãi chứa cốt lõi.
pareshverma91

Câu trả lời:


3

Theo mặc định, các bãi chứa lõi được ghi vào đĩa và không nên ghi vào bộ nhớ. Xem trang hướng dẫn cốt lõi để biết thêm thông tin. Bạn có thể tìm ra và thay đổi đường dẫn và tên tệp của tệp lõi bằng cách xem/proc/sys/kernel/core_pattern

Bạn chỉ có thể vô hiệu hóa các bãi chứa lõi bằng cách chuyển hướng coredump.confđếnnull

$ sudo ln -s /dev/null /etc/sysctl.d/coredump.conf && /lib/systemd/systemd-sysctl

Một cách khác để vô hiệu hóa các bãi chứa lõi là bằng cách thay đổi cài đặt tronglimits.conf


Tôi đã vô hiệu hóa các bãi rác cốt lõi khi tôi thấy điều này xảy ra, sử dụng một trong những cách này (hoặc cả hai, hiện không nhớ). Điều tôi bối rối là, sau khi một quá trình xảy ra sự cố, một quy trình xử lý hệ thống mới sẽ bắt đầu để duy trì kết xuất lõi trong bộ nhớ (xem xét dung lượng bộ nhớ đã chiếm). Bây giờ có thể lập luận rằng có lẽ quá trình đã được trao đổi vào đĩa, nhưng vấn đề là tại sao quá trình tồn tại. Ý tôi là tại sao quá trình xử lý kết xuất lõi không thể ghi kết xuất trong tệp và thoát.
pareshverma91

Lưu ý rằng tên tập tin thay đổi từ coredump.confđến 50-coredump.confbây giờ. Xem thêm wiki Arch Linux cho Systemd .
JonnyJD
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.