Đặt Linux Core vị trí kết xuất

Dat Linux Core Vi Tri Ket Xuat



'Core Dump' trong Linux là gì?

Khi một quá trình thoát bất ngờ, nó thường để lại một 'kết xuất lõi' trong hệ thống của bạn. Có một thông báo có liên quan được bao gồm với điều này. Lõi đóng vai trò là công cụ sửa lỗi và là hình ảnh của bộ nhớ cũng bao gồm thông tin gỡ lỗi. Nếu bạn là người dùng không muốn gỡ lỗi chương trình, bạn có thể xóa lõi:

$ rừm cốt lõi

Bạn cũng có thể để nguyên, vì lõi cũ sẽ bị ghi đè nếu lõi mới bị hủy. Bạn cũng có thể hủy kích hoạt kết xuất lõi bằng lệnh sau:







$ giảm bớt -c 0

Chúng tôi có thể tạo các kết xuất lõi theo yêu cầu (ví dụ: thông qua trình gỡ lỗi) hoặc chúng có thể được tạo tự động khi kết thúc. Hạt nhân khởi tạo các kết xuất lõi do kết quả thoát đột ngột của chương trình. Chúng có thể được gửi đến một số chương trình khác (chẳng hạn như systemd-coredump) để thực hiện các thao tác bổ sung.



Như thường lệ, có sự đánh đổi giữa việc thu thập dữ liệu để có độ ổn định và khắc phục sự cố tốt hơn và nguy cơ tiết lộ thông tin nhạy cảm từ dữ liệu gỡ lỗi.



Chúng tôi sẽ bảo hiểm những gì?

Trong bài viết này, chúng ta sẽ xem cách đặt vị trí của các kết xuất lõi trên HĐH Ubuntu 20.04. Hãy bắt đầu ngay bây giờ.





Tạo kết xuất lõi

Trước tiên hãy xem cách chúng ta có thể tạo một kết xuất lõi. Đối với điều này, chúng tôi sử dụng lệnh tiêu diệt Linux. Đầu tiên, tìm PID của một quy trình và sau đó gửi tín hiệu tiêu diệt. Ví dụ: hãy bắt đầu quá trình ngủ và sau đó tắt nó bằng PID của nó:

$ ngủ 500

$ giết chết -S SIGTRAP $ ( nắm chặt ngủ )



Bây giờ bạn đã học cách tạo kết xuất lõi, bạn có thể sử dụng nó trong các phần tiếp theo sau đây.

Họ đi đâu?

Tệp kết xuất lõi được đặt tên là core.pid theo mặc định và được tạo trong thư mục làm việc của ứng dụng. Ở đây, pid là id tiến trình.

Với công cụ ulimit, bạn có thể lấy hoặc thay đổi giới hạn tài nguyên hệ thống cho shell hiện tại và bất kỳ shell nào sau nó. Để xác minh hoặc định cấu hình giới hạn kích thước tệp lõi, hãy sử dụng lệnh sau:

$ giảm bớt -c

Để tránh phân định hoặc cắt bớt tệp lõi, hãy đảm bảo rằng giới hạn được đặt trên toàn cầu thành “không giới hạn” [1]. Điều này có thể được thực hiện trong /etc/security/limits.conf bằng cách thêm dòng sau:

gốc - lõi không giới hạn

* - lõi không giới hạn

Bây giờ, chỉ cần đăng xuất và đăng nhập lại để biết các giới hạn được áp dụng cho phiên của bạn.

Tùy chỉnh vị trí của Core Dump

Lệnh “sysctl kernel.core_pattern” hoặc “/proc/sys/kernel/core_pattern” thường được sử dụng để đặt vị trí nơi các kết xuất lõi đi đến.

Nhập lệnh sau để xem cài đặt cho mẫu lõi hiện tại:

$ con mèo / proc / hệ thống / nhân / core_pattern

Thông thường, bạn sẽ tìm thấy giá trị mặc định được liệt kê là “lõi” tại đây.

Sử dụng “/proc/sys/kernel/core_potype” để đặt vị trí kết xuất lõi

Hãy tạm thời chuyển hướng các kết xuất lõi đến một vị trí mới, chẳng hạn như /tmp/dumps/core, sử dụng tệp “/proc/sys/kernel/core_potype” [2] [3]. Bây giờ, hãy làm theo các bước sau:

Bước 1 . Đầu tiên, tạo một thư mục để lưu trữ các kết xuất lõi:

$ mkdir -P / tmp / bãi rác / lõi /

Bước 2 . Cấp quyền cần thiết cho thư mục này:

$ chmod a+x / tmp / bãi rác / lõi /

Bước 3 . Bây giờ, tạm thời đặt đường dẫn kết xuất lõi:

$ tiếng vang '/tmp/dump/lõi/lõi' | sudo phát bóng / proc / hệ thống / nhân / core_pattern

Một lần nữa, trên toàn cầu đặt ulimit thành không giới hạn.

Tại đây, chúng ta có thể nối thêm một số thông tin khác vào tên của tệp như sau:

$ tiếng vang '/tmp/dump/cores/core_%e.%p_%t' | sudo phát bóng / proc / hệ thống / nhân / core_pattern

Mỗi tham số được sử dụng ở đây có thể được định nghĩa như sau:

% và: thực thi được tập tin Tên

% P: tiến trình Tôi hoặc pid.

% t: thêm dấu thời gian

Bước 4 . Tiếp theo, chúng ta phải thay đổi tệp “/etc/sysctl.conf” để áp dụng vĩnh viễn các cài đặt trước đó. Mở tập tin này:

$ sudo nano / vân vân / sysctl.conf

Bây giờ, thêm dòng sau vào tệp này:

kernel.core_potype = / tmp / bãi rác / lõi / cốt lõi

Ngoài ra, thay vì dòng này, bạn có thể thêm dòng này:

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

Đó là tất cả những gì chúng ta cần làm. Bây giờ, hãy tạo một kết xuất lõi như đã đề cập trong phần “Tạo kết xuất lõi”. Sau này, chúng tôi có thể kiểm tra xem tệp lõi của chúng tôi có được tạo hay không:

$ ls -l / tmp / bãi rác / lõi /

Sử dụng lệnh “Sysctl” để đặt vị trí kết xuất lõi

Như đã đề cập trước đó, chúng ta cũng có thể sử dụng lệnh sysctl cho mục đích tương tự. Hãy thay đổi vị trí kết xuất lõi và định dạng của tệp lõi:

Bước 1 . Tạo một thư mục mới và cung cấp các quyền cần thiết:

$ mkdir -P / tmp / bãi rác của tôi

$ chmod a+rwx / tmp / bãi rác của tôi

Bước 2 . Bây giờ, chỉ cần chạy lệnh sau:

$ sudo hệ thống -Trong kernel.core_pattern= / tmp / bãi rác của tôi / cốt lõi_ % và. % P_ % t

Bước 3 . Bây giờ, một lần nữa, tạo kết xuất lõi như chúng ta đã làm trước đó. Sau đó, hãy kiểm tra xem tệp lõi có được tạo hay không:

$ ls -l / tmp / bãi rác của tôi /

Trên các hệ thống Ubuntu, các kết xuất lõi thường được gửi tới Apport. Đối với các hệ thống dựa trên Red Hat, nó có thể được chuyển tiếp đến Công cụ báo cáo lỗi tự động (ABRT). Ban đầu, tôi gặp sự cố khi định cấu hình vị trí kết xuất lõi, vì vậy tôi phải tắt hoàn toàn Apport trên Ubuntu 20.04. Có lẽ, đây cũng có thể là trường hợp của Red Hat và những người khác.

Phần kết luận

Trong bài viết này, chúng ta đã thấy cách chúng ta có thể tùy chỉnh vị trí của các kết xuất lõi trên HĐH Ubuntu 20.04. Các kết xuất cốt lõi có thể giúp bạn tìm ra điều gì sai, nhưng chúng rất tệ khi làm rò rỉ dữ liệu nhạy cảm. Nên vô hiệu hóa các kết xuất lõi bất cứ khi nào chúng không được yêu cầu và chỉ được bật khi thực sự cần thiết. Trong tình huống như vậy, hãy xác nhận rằng các tệp được lưu trữ an toàn để người dùng thông thường không thể truy cập dữ liệu. Hơn nữa, bất kể quyết định của bạn là gì, bạn phải luôn kiểm tra cấu hình của mình để đảm bảo rằng nó hoạt động như dự định.

Kết xuất lõi và cấu hình mặc định được xử lý khác nhau bởi các hệ điều hành khác nhau. Trong thời gian gần đây, hầu hết các hệ thống Linux đã áp dụng systemd, điều này dẫn đến một số điều chỉnh quy tắc nhỏ. Tùy thuộc vào cách hệ thống của bạn được cấu hình, bạn có thể cần tìm kiếm các kết xuất lõi.