Quy trình xác sống

Đọc một mục từ sống động Tôi nhớ rằng trong một diễn đàn, ai đó đã yêu cầu trợ giúp vì hệ thống của họ chạy chậm, một số giải pháp tập trung vào các quy trình.

Các trạng thái chính của các quy trình trong Linux là:
Đang ngủ (S) : Các tiến trình đang chờ đến lượt thực thi.
Đang chạy (R) : Các quy trình đang chạy.
Chờ đợi (D) : Các quy trình chờ một thao tác Nhập / Thoát được hoàn tất.
Xác sống (Z) : Các quy trình đã kết thúc nhưng vẫn tiếp tục xuất hiện trong bảng quy trình. Chúng có thể do lỗi lập trình gây ra và có thể là triệu chứng của hệ thống chậm hoặc gây ra sự cố.

Quy trình Zombie là quy trình không bao giờ nhận được tín hiệu từ quy trình mẹ đã tạo ra nó, quy trình con là quy trình có nguồn gốc từ quy trình cấp cao hơn được gọi là quy trình mẹ chịu trách nhiệm gửi tín hiệu đến quy trình con được tạo bởi nó để cho biết rằng tuổi thọ của nó đã kết thúc.

Chúng có thể do lỗi lập trình gây ra và có thể là dấu hiệu của hệ thống chậm hoặc gây ra sự cố. Tình huống này thường xảy ra, cũng do một số cấu hình không được nhà phát triển dự tính.

Trong Wikipedia, bạn có thể đọc thêm về các quy trình này.

Thực thi lệnh hàng đầu, chúng ta có thể thấy trong thời gian thực các tiến trình đang chạy trong hệ thống và nó sẽ cho biết nếu có bất kỳ quá trình nào ở trạng thái thây ma, nhưng nó không cho biết đó là cái nào.

quá trình

Để xem tất cả các quy trình, hãy nhập vào terminal: ps auxvà để chỉ nhìn thấy những thây ma: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Nếu khi liệt kê các quy trình, một quy trình xuất hiện với trạng thái Z, điều đó có nghĩa là nó là một zombie, điều đó có nghĩa là ứng dụng chưa được giải quyết tốt hoặc có lỗi, biết PID của nó có thể bị loại bỏ bằng cách thực hiện trong thiết bị đầu cuối một lệnh tương tự như, trong ví dụ này: 

alf @ Alf ~ $ kill -9 1945

Khi bạn có nhiều quy trình zombie hoặc ít nhất nhiều hơn một, bạn có thể sử dụng lệnh sau để tiêu diệt chúng, nó chỉ hoạt động cho điều đó, nếu bạn chạy nó mà không có quy trình zombie thì sẽ không có gì xảy ra:

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''

Liên quan


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   đúng dijo

    🙁

  2.   Oscar dijo

    Cảm ơn, đóng góp rất tốt, tôi sẽ lưu các lệnh để thực hiện xác minh định kỳ.

  3.   Josh dijo

    Cảm ơn, bài viết hay.

  4.   msx dijo

    Một số điều làm rõ về bài viết của bạn:

    Thuật ngữ "quá trình Zombie" là không phù hợp về mặt kỹ thuật và những người trong chúng ta có một chút kinh nghiệm với GNU / Linux nên tránh sử dụng nó vì không có quá trình nào chạy trong chính nó, mà nó chỉ là tham chiếu đến một quá trình không còn tồn tại trong hệ thống và anh ấy đã không phát hành mã định danh của mình.

    "Quá trình zombie" thực sự là mục nhập trong bảng ánh xạ của mã định danh quy trình (bộ mô tả quy trình), chỉ vậy, vì vậy nó không tiêu tốn tài nguyên vượt quá một vài byte bộ nhớ mà hệ thống sử dụng để theo dõi bảng quy trình.

    Vấn đề duy nhất có thể xảy ra với các bộ mô tả đăng ký ma (hoặc thây ma) là nếu những bộ mô tả đăng ký này sinh sản quá nhanh, về mặt lý thuyết, chúng có thể chiếm toàn bộ bảng phân bổ bộ mô tả quy trình, khiến hệ thống không có không gian cho các bản ghi mới, vì vậy nó có thể Không thể chạy các chương trình mới - ghi lại các quy trình của chúng - cuối cùng là treo máy.

    Tuy nhiên, điều này gần như không thể xảy ra vì trong hệ thống 32-bit có 32767 không gian để đăng ký các tiến trình (hiếm khi hoặc không bao giờ được sử dụng) và gấp đôi trong hệ thống 64-bit.

    Cách duy nhất để khiến hệ thống gặp sự cố với các quy trình đã chết bị loại bỏ một cách tồi tệ là tạo các quy trình và giết chúng nhanh chóng mà không làm sạch chính xác bộ mô tả quy trình (nghĩa là tạo "quy trình zombie") nhưng, hãy đối mặt với nó, nếu ai đó muốn treo một hệ thống có nhiều cách trực tiếp hơn thế. để bắt đầu tạo các quy trình mới một cách nhanh chóng theo cấp số nhân gây kẹt và treo nó; một trong những cách để đạt được điều này với bom ngã ba:

    : () {: |: &};:

    Bạn có thể làm cho hệ thống tương đối chống lại bom fork bằng cách định cấu hình /etc/security/limits.conf một cách chính xác, mặc dù phải lưu ý rằng chúng tôi càng hạn chế khả năng tạo các quy trình mới, chúng tôi sẽ có thể chạy ít ứng dụng đồng thời hơn trên hệ thống của mình. Tuy nhiên, nó là một công cụ hợp lệ cho tất cả các sysadmin hoang tưởng muốn kiểm soát rất tốt hệ thống của họ!

    Bài viết này có thông tin tốt về các bộ mô tả quy trình không hợp lệ:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Và trong điều này có một lời giải thích rõ ràng về cách thức hoạt động của bom ngã ba: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dijo

      msx: «Thuật ngữ“ Zombie process ”về mặt kỹ thuật là không phù hợp và những người trong chúng ta có một chút kinh nghiệm với GNU / Linux nên tránh sử dụng nó…» Ha ha ha. Chỉ có điều gì đó lớn hơn niềm tự hào của bạn: sở thích tồi tệ của bạn. Này, bạn đã làm rất tệ, nếu bạn muốn thuyết trình, nhận một bài trong khoa, hoặc viết blog của riêng bạn và viết những gì bạn muốn, nhưng đến đây để sửa lại căn hộ cho tốt Alf thật sự rất tệ.

      1.    Ferdinand Rojas dijo

        Sự thật đối với tôi dường như là một nhận xét khá thú vị. Nhiều hơn các bài đăng

  5.   Platonov dijo

    cảm ơn bạn rất thú vị.

  6.   thối87 dijo

    bài báo xuất sắc cảm ơn

  7.   Alf dijo

    msx
    «Thuật ngữ“ quá trình xác sống ”không phù hợp về mặt kỹ thuật và những người trong chúng ta, những người có một chút kinh nghiệm về GNU / Linux nên tránh sử dụng nó»

    Chúng tôi sẽ phải thông báo cho các nhà phát triển, vì như bạn sẽ thấy, thuật ngữ zombie cũng được sử dụng, tôi đã đọc nó trên bảng điều khiển.

    Liên quan

  8.   Thành phố dijo

    Chúc mừng bạn, bài viết rất hay, trước đây mình luôn nghi ngờ họ là PZ nhưng chưa bao giờ có thời gian tìm hiểu, giờ vào trang và bắt gặp câu trả lời cảm ơn bạn …….

  9.   truko22 dijo

    Trong KDE với hệ thống điều khiển + hoạt động thoát ra ngoài và chúng ta có thể tiêu diệt lũ zombie đó một cách nhanh chóng.

  10.   Mưa dijo

    Điều chỉnh, nó là một ZOMBIE không phải là một quá trình ZOMBIE
    Zombie bằng tiếng anh
    Zombi bằng tiếng Tây Ban Nha

  11.   linh miêu dijo

    Sang trọng, cảm ơn bạn!

  12.   Roberto dijo

    Đầu tiên, thuật ngữ quá trình zombie có vẻ hoàn toàn chính xác. Ngoài ra, thuật ngữ là ít quan trọng nhất.
    Vấn đề là như msx chỉ ra, và cùng một wikipedia (tôi đã đọc bài báo), quá trình zombie thực sự đã chết.
    «Khi một quá trình kết thúc, tất cả bộ nhớ và các tài nguyên liên quan của nó sẽ được tham chiếu đến, để chúng có thể được sử dụng bởi các quá trình khác. Dù sao, mục nhập quy trình trong bảng quy trình vẫn còn »
    Đó là, quá trình không còn chiếm tài nguyên hệ thống, do đó tải trên hệ thống là tối thiểu, như msx giải thích.
    Tuy nhiên, điều duy nhất mà nó có là một mục nhập không hợp lệ trong bảng quy trình ... mà nếu có hàng nghìn mục trong số chúng, có thể đó sẽ là một tải (sau cùng, bộ xử lý phải đọc bảng quy trình và nó sẽ đọc rất nhiều thông tin vô ích) ngoài việc phản ánh các phương pháp lập trình tồi (ai đó đang tạo ra các ứng dụng kém).
    Nhưng bản thân lời giải thích của bài đăng không đúng như vậy và cái chính xác sẽ là cái do msx đưa ra.