Tôi có thể thấy danh sách các tiến trình bị giết kernel ở đâu?


33

Có cách nào để tôi có thể kiểm tra xem quy trình nào mà kernel đã giết không? Đôi khi tôi đăng nhập vào máy chủ của mình và thấy rằng một cái gì đó nên chạy suốt đêm chỉ dừng lại 8 giờ và tôi không chắc đó là ứng dụng đang hoạt động hay hạt nhân.

Câu trả lời:


30

Nếu kernel giết một tiến trình (vì hệ thống hết bộ nhớ), sẽ có một thông báo nhật ký kernel. Đăng nhập /var/log/kern.log(trên Debian / Ubuntu, các bản phân phối khác có thể gửi nhật ký kernel đến một tệp khác, nhưng thường là /var/logtrong Linux).

Lưu ý rằng nếu trình diệt OOM (kẻ giết người hết bộ nhớ) được kích hoạt, điều đó có nghĩa là bạn không có đủ bộ nhớ ảo. Thêm nhiều trao đổi (hoặc có thể nhiều RAM hơn).

Một số sự cố quá trình cũng được ghi lại trong nhật ký kernel (ví dụ: lỗi phân đoạn).

Nếu các quy trình được bắt đầu từ cron, bạn sẽ có một thư có thông báo lỗi. Nếu các quy trình được bắt đầu từ một vỏ trong một thiết bị đầu cuối, hãy kiểm tra các lỗi trong thiết bị đầu cuối đó. Chạy quá trình screenđể xem thiết bị đầu cuối một lần nữa vào buổi sáng. Điều này có thể không giúp ích gì nếu kẻ giết người OOM kích hoạt, bởi vì nó cũng có thể đã giết chết cron hoặc quá trình sàng lọc; nhưng nếu bạn gặp phải kẻ giết người OOM, đó là vấn đề bạn cần khắc phục.


Thông điệp giết chủ đề như trong là gì /var/log/kern.log?
Ong

12

Quy trình kế toán có thể giúp đỡ ở đây.

Tóm lại:

apt-get install acct

Sau đó thử các lệnh như:

lastcomm
sa

hoặc trên Ubuntu:

lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct

Xem:

CẬP NHẬT

Kỳ lạ thay, paccttập tin có thông tin về trạng thái thoát, nhưng dường như lastcommkhông sain nó.

Theo như tôi thấy, bạn phải viết chương trình C của riêng mình để truy cập thông tin.

CẬP NHẬT 2

Đây là phiên bản in mã thoát.

Hai trường cuối cùng là "S" cho tín hiệu và "E" cho thoát, theo sau là số tín hiệu hoặc trạng thái thoát.

Vì vậy, trong trường hợp của bạn, có lẽ bạn đang tìm kiếm "S 15" có nghĩa là nó có SIGTERM.

sleep                X mikel    stdin      0.00 secs Fri Mar 25 20:15 S  15

So với "E 0" có nghĩa là quá trình đã thoát mà không có lỗi.

true                   mikel    stdin      0.00 secs Fri Mar 25 20:16 E   0

Chỉ được thử nghiệm tối thiểu.


-1

dịch vụ sudo --status-all

Lệnh này sẽ cho bạn biết các dịch vụ hiện đang chạy là gì và không được bắt đầu hoặc dừng ..

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.