Có 1 quá trình zombie


33

Thông báo này xuất hiện khi tôi đăng nhập vào máy của mình ...

There is 1 zombie process.
  • Nó đang nói với tôi điều gì?
  • Đây có phải là bất cứ điều gì tôi nên lo lắng?
  • Nếu có, thì tôi nên làm gì, và làm thế nào?

19
Bạn có một khẩu súng ngắn hai nòng gần đó không?
EEAA

Câu trả lời:


28

Không có gì phải lo lắng:

Thây ma

Trên các hệ điều hành Unix, một quá trình zombie hoặc quá trình không còn tồn tại là một quá trình đã hoàn thành thực thi nhưng vẫn có một mục trong bảng quy trình, cho phép quá trình bắt đầu đọc trạng thái thoát của nó. Trong phép ẩn dụ đầy màu sắc của thuật ngữ, quá trình con đã chết nhưng chưa được gặt hái.

Khi một quá trình kết thúc, tất cả bộ nhớ và tài nguyên được liên kết với nó sẽ được giải phóng để chúng có thể được sử dụng bởi các quy trình khác. Tuy nhiên, mục của quy trình trong bảng quy trình vẫn còn. Phụ huynh được gửi tín hiệu SIGCHLD cho biết một đứa trẻ đã chết; bộ xử lý tín hiệu này thường sẽ thực hiện cuộc gọi hệ thống chờ, đọc trạng thái thoát và loại bỏ zombie. ID tiến trình và mục nhập của zombie trong bảng quy trình sau đó có thể được sử dụng lại. Tuy nhiên, nếu cha mẹ bỏ qua SIGCHLD, zombie sẽ bị bỏ lại trong bảng quy trình. Trong một số tình huống, điều này có thể được mong muốn, ví dụ nếu cha mẹ tạo ra một tiến trình con khác, nó đảm bảo rằng nó sẽ không được cấp ID tương tự.

Nguồn: http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process


Cảm ơn Marc mô tả tốt; Bây giờ làm thế nào tôi tìm thấy nó, tìm hiểu xem có nên giữ nó không, và nếu không, từ đó loại bỏ nó (và tin nhắn).
John Mee

Chúng sẽ tự biến mất, nếu điều này thực sự gây khó chịu cho bạn, bạn có thể khởi động lại hoặc tìm tiến trình cha mẹ và giết nó, nhưng phụ thuộc vào điều gì khiến zombie bị bỏ lại phía sau, điều đó có thể gây khó khăn cho việc tiêu diệt quá trình cụ thể đó.
Marc-Andre R.

2
Đừng quên chấp nhận câu trả lời của tôi nếu đây là câu trả lời thực sự cho câu hỏi của bạn;) cảm ơn!
Marc-Andre R.

10
Xin lỗi, bạn chỉ trả lời phần đầu tiên của câu hỏi của anh ấy. Vẫn chưa rõ liệu người ta có nên lo lắng về nó hay không và phải làm gì với nó.

0

Như đã giải thích trong câu trả lời được chấp nhận, bạn có một quy trình đã hoàn thành thực thi nhưng vẫn còn trong bảng quy trình: https://serverfault.com/a/390216/48449

Điều này sẽ không gây hại nếu đó chỉ là một quá trình, nhưng vẫn không nên xảy ra. Nếu có quá nhiều và bạn không khởi động lại hoặc khởi động lại quá trình cha mẹ gây ra những quy trình đó, bạn có thể đạt đến số lượng quy trình được phép tối đa của mình và gây ra sự cố nghiêm trọng.

Để tìm hiểu xem lo lắng có phù hợp không và zombie thuộc về quy trình nào khác, điều này phù hợp với tôi:

ps -elf --forest | grep -C5 '<[d]efunct>'

Tăng số lượng dòng ngữ cảnh nếu cần thiết để tìm hiểu về quy trình cha, lý tưởng là sửa quá trình đó để làm cho nó "gặt hái" các quy trình con đã kết thúc của nó.

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.