Διαδικασίες ζόμπι

Διαβάζοντας μια καταχώρηση από Έλαβ Θυμήθηκα ότι σε ένα φόρουμ κάποιος ζήτησε βοήθεια καθώς το σύστημά του ήταν αργό, μερικές από τις λύσεις επικεντρώθηκαν στις διαδικασίες.

Οι κύριες καταστάσεις των διαδικασιών στο Linux είναι:
Ύπνος (S) : Διαδικασίες που περιμένουν τη σειρά τους για εκτέλεση.
Τρέξιμο (R) : Διαδικασίες που εκτελούνται.
Αναμονή (Δ) : Διαδικασίες που περιμένουν να ολοκληρωθεί μια λειτουργία εισόδου / εξόδου.
Ζόμπι (Ζ) : Διαδικασίες που έχουν τελειώσει αλλά εξακολουθούν να εμφανίζονται στον πίνακα διεργασιών. Μπορούν να προκληθούν από σφάλματα προγραμματισμού και μπορεί να είναι σύμπτωμα ενός αργού ή προβληματικού συστήματος.

Μια διαδικασία Zombie είναι μια διαδικασία που δεν έλαβε ποτέ σήμα από τη γονική διαδικασία που τη δημιούργησε, μια διαδικασία παιδιού είναι αυτή που έχει την προέλευσή της σε μια διαδικασία υψηλότερου επιπέδου γνωστή ως η γονική διαδικασία που είναι υπεύθυνη για την αποστολή των σημάτων στις θυγατρικές διαδικασίες δημιουργήθηκε από αυτό για να δείξει ότι η διάρκεια ζωής του έχει λήξει.

Μπορούν να προκληθούν από σφάλματα προγραμματισμού και μπορεί να είναι σύμπτωμα ενός αργού ή συστήματος που προκαλεί προβλήματα. Αυτή η κατάσταση εμφανίζεται συνήθως, επίσης, επειδή ορισμένες προγραμματιστές δεν μελετήθηκαν από τον προγραμματιστή.

Στην Wikipedia μπορείτε διαβάστε περισσότερα για αυτές τις διαδικασίες.

Εκτελώντας την κορυφαία εντολή μπορούμε να δούμε σε πραγματικό χρόνο τις διαδικασίες που εκτελούνται στο σύστημα και θα δείξει εάν υπάρχουν σε κατάσταση ζόμπι, αλλά δεν δείχνει ποια είναι.

διαδικασία

Για να δείτε όλες τις διαδικασίες, πληκτρολογήστε το τερματικό: ps auxκαι για να δείτε μόνο τα ζόμπι: 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

Εάν κατά την καταχώριση των διαδικασιών εμφανίζεται κάποιος με την κατάσταση Z, αυτό σημαίνει ότι είναι ζόμπι, το οποίο με τη σειρά του σημαίνει ότι η εφαρμογή δεν έχει λυθεί καλά ή έχει σφάλματα, γνωρίζοντας ότι το PID του μπορεί να εξαλειφθεί εκτελώντας στο τερματικό μια εντολή παρόμοια , σε αυτό το παράδειγμα: 

alf @ Alf ~ $ kill -9 1945

Όταν έχετε πολλές διεργασίες ζόμπι ή τουλάχιστον περισσότερες από μία, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή που τις σκοτώνει, λειτουργεί μόνο για αυτό, εάν το εκτελέσετε χωρίς να έχετε διεργασίες ζόμπι, δεν θα συμβεί τίποτα:

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

αφορά


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   κατάλληλος dijo

    🙁

  2.   Όσκαρ dijo

    Ευχαριστώ, πολύ καλή συνεισφορά, θα αποθηκεύσω τις εντολές για να κάνω περιοδικές επαληθεύσεις.

  3.   Αστειεύομαι dijo

    Ευχαριστώ, ωραίο άρθρο.

  4.   MSX dijo

    Μερικές διευκρινίσεις σχετικά με το άρθρο σας:

    Ο όρος "διαδικασία Zombie" είναι τεχνικά ακατάλληλος και όσοι από εμάς έχουμε λίγη εμπειρία με το GNU / Linux θα πρέπει να αποφύγουν τη χρήση τους, καθώς δεν υπάρχει καμία διαδικασία που εκτελείται από μόνη της, αλλά είναι μόνο μια αναφορά σε μια διαδικασία που δεν υπάρχει πλέον στο σύστημα και δεν απελευθέρωσε το αναγνωριστικό του.

    Μια "διαδικασία ζόμπι" είναι στην πραγματικότητα η καταχώριση στον πίνακα χαρτογράφησης του αναγνωριστικού διεργασίας (διαδικασία περιγραφής), ακριβώς έτσι, ώστε να μην καταναλώνει πόρους πέρα ​​από λίγα byte μνήμης που χρησιμοποιεί το σύστημα για να παρακολουθεί τον πίνακα διεργασιών.

    Το μόνο πρόβλημα που μπορεί να υπάρχει με τους περιγραφείς μητρώου Ghost (ή zombie) είναι ότι εάν δημιουργήσουν πολύ γρήγορα, θα μπορούσαν θεωρητικά να καταλάβουν ολόκληρο τον πίνακα κατανομής περιγραφών διεργασίας αφήνοντας το σύστημα χωρίς χώρο για νέες εγγραφές, επομένως θα ήταν αδύνατο να εκτελεστούν νέα προγράμματα - που καταγράφουν τις διαδικασίες τους - τελικά κρέμονται το μηχάνημα.

    Ωστόσο, αυτό είναι σχεδόν αδύνατο να συμβεί, καθώς σε συστήματα 32-bit υπάρχουν 32767 χώροι για την καταχώριση διαδικασιών (σπάνια ή ποτέ δεν χρησιμοποιούνται) και διπλάσιο από αυτό σε ένα σύστημα 64-bit.

    Ο μόνος τρόπος για να κάνετε ένα σφάλμα συστήματος με τις νεκρές διεργασίες να αφαιρεθούν άσχημα είναι να δημιουργήσετε τις διαδικασίες και να τις σκοτώσετε γρήγορα χωρίς να καθαρίσετε σωστά τον περιγραφέα διεργασιών (δηλαδή, να δημιουργήσετε "διεργασίες ζόμπι") αλλά, ας το παραδεχτούμε, αν κάποιος θέλει να κρεμάσει ένα σύστημα υπάρχουν πολύ πιο άμεσοι τρόποι από αυτό. για να ξεκινήσετε γρήγορα τη δημιουργία νέων διεργασιών με εκθετικό τρόπο που μπλοκάρει το σύστημα και να το κρεμάσει. ένας από τους τρόπους για να επιτευχθεί αυτό με μια βόμβα πιρούνι:

    : () {: |: &};:

    Μπορείτε να κάνετε το σύστημα σχετικά ανθεκτικό σε μια βόμβα πιρουνιού ρυθμίζοντας σωστά το /etc/security/limits.conf, αν και πρέπει να ληφθεί υπόψη ότι όσο περισσότερο περιορίζουμε τη δυνατότητα δημιουργίας νέων διαδικασιών, θα είμαστε σε θέση να εκτελέσουμε λιγότερες εφαρμογές ταυτόχρονα στο σύστημά μας. Ωστόσο, είναι ένα έγκυρο εργαλείο για όλους τους παρανοϊκούς sysadmin που θέλουν να έχουν πολύ καλό έλεγχο στα συστήματά τους!

    Αυτό το άρθρο έχει καλές πληροφορίες για μη έγκυρους περιγραφείς διεργασιών:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Και σε αυτό υπάρχει μια σαφής εξήγηση για το πώς λειτουργεί μια βόμβα πιρούνι: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dijo

      msx: «Ο όρος« διαδικασία Zombie »είναι τεχνικά ακατάλληλος και όσοι από εμάς έχουμε λίγη εμπειρία με το GNU / Linux πρέπει να αποφύγουν τη χρήση τους…» Χα χα χα. Υπάρχει μόνο κάτι μεγαλύτερο από την περηφάνια σας: η κακή σας γεύση. Γεια, έχει κακή γεύση αυτό που κάνατε, αν θέλετε να δώσετε μια διάλεξη, πάρτε ένα στη σχολή ή βάλτε το δικό σας blog και γράψτε αυτό που θέλετε, αλλά έρχεται εδώ για να διορθώσει το διαμέρισμα σε καλό Alf είναι πραγματικά κακή .

      1.    Φερνάντο Ρότζας dijo

        Η αλήθεια μου φάνηκε ένα πολύ ενδιαφέρον σχόλιο. Πολύ περισσότερο από την ανάρτηση

  5.   πλατωνόφ dijo

    ευχαριστώ πολύ ενδιαφέρον.

  6.   σαπίζει87 dijo

    εξαιρετικό άρθρο ευχαριστώ

  7.   Alf dijo

    MSX
    «Ο όρος« διαδικασία Zombie »είναι τεχνικά ακατάλληλος και όσοι από εμάς έχουμε λίγη εμπειρία στο GNU / Linux πρέπει να αποφύγουν τη χρήση τους»

    Θα πρέπει να ενημερώσουμε τους προγραμματιστές, καθώς όπως θα δείτε, χρησιμοποιείται και ο όρος ζόμπι, εκεί το διάβασα στην κονσόλα.

    αφορά

  8.   Πόλη dijo

    Συγχαρητήρια, πολύ καλό άρθρο, είχα πάντα αμφιβολίες ότι ήταν οι PZ, αλλά δεν είχα ποτέ χρόνο να ερευνήσω, τώρα πηγαίνω στη σελίδα και συναντώ την απάντηση ευχαριστώ …….

  9.   truko22 dijo

    Στο KDE με σύστημα ελέγχου + διαφυγής δραστηριοποιούνται και μπορούμε να σκοτώσουμε αυτά τα ζόμπι γρήγορα.

  10.   Βροχή dijo

    Μια διόρθωση, είναι μια διαδικασία ZOMBIE και όχι ZOMBIE
    Το Zombie είναι στα αγγλικά
    Zombi στα ισπανικά

  11.   Έλινξ dijo

    Πολυτέλεια, ευχαριστώ!

  12.   Ρομπέρτο dijo

    Πρώτον, ο όρος διαδικασία ζόμπι φαίνεται απολύτως σωστός. Επίσης ο όρος είναι ο λιγότερο σημαντικός.
    Το θέμα είναι ότι, όπως δείχνει το msx, και το ίδιο wikipedia (διάβασα το άρθρο), η διαδικασία ζόμπι είναι πραγματικά νεκρή.
    «Όταν τελειώσει μια διαδικασία, όλη η μνήμη και οι σχετικοί πόροι δεν αναφέρονται, έτσι ώστε να μπορούν να χρησιμοποιηθούν από άλλες διαδικασίες. Εν πάση περιπτώσει, η καταχώριση της διαδικασίας στον πίνακα διαδικασίας παραμένει »
    Δηλαδή, η διαδικασία δεν καταλαμβάνει πλέον πόρους συστήματος, επομένως το φορτίο στο σύστημα είναι ελάχιστο, όπως εξηγείται από το msx.
    Ωστόσο, το μόνο πράγμα που έχει είναι μια μη έγκυρη καταχώριση στον πίνακα διεργασιών ... η οποία, εάν υπάρχουν χιλιάδες από αυτές, ίσως θα ήταν ένα φορτίο (τελικά, ο επεξεργαστής πρέπει να διαβάσει τον πίνακα διαδικασίας και θα διάβαζε πολλές άχρηστες πληροφορίες) εκτός από το να αντικατοπτρίζει τις κακές πρακτικές προγραμματισμού (κάποιος κάνει κακές εφαρμογές).
    Αλλά από μόνη της η εξήγηση της ανάρτησης δεν είναι τόσο σωστή και η σωστή θα ήταν αυτή που δόθηκε από το msx.