Διαδικασία ζόμπι. Δεν έχουν ακούσει όλοι για αυτήν την ενδιαφέρουσα αλλά τρομακτική λέξη που σχετίζεται με το λειτουργικό σύστημα Linux. Σε έναν προσωπικό υπολογιστή, οι διεργασίες ζόμπι μπορεί να μην αποτελούν απειλή για έναν κανονικό χρήστη, αλλά όταν πρόκειται για διακομιστές Linux, αυτές οι διαδικασίες πρέπει να εντοπιστούν και να σταματήσουν.

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

Τι είναι οι διαδικασίες Zombie;

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

instagram viewer

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

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

Τι προκαλεί τις διεργασίες Zombie στο Linux;

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

Κάθε καταχώριση διαδικασίας στον πίνακα διαδικασίας αποτελείται από έναν σύνδεσμο προς το μπλοκ ελέγχου διαδικασίας αυτής της συγκεκριμένης διαδικασίας. Το PCB αποθηκεύει τις λεπτομέρειες που σχετίζονται με τη συγκεκριμένη διαδικασία. Αυτές οι λεπτομέρειες περιλαμβάνουν:

  1. Κατάσταση διαδικασίας: Η τρέχουσα κατάσταση της διαδικασίας
  2. Αριθμός διαδικασίας: Ένας μοναδικός αριθμός που χρησιμοποιείται για τον προσδιορισμό της διαδικασίας
  3. Μετρητής προγράμματος: Περιέχει πληροφορίες που σχετίζονται με την επόμενη οδηγία
  4. Μητρώα: Λίστα όλων των καταχωρητών CPU που χρησιμοποιούνται από τη διαδικασία
  5. Άνοιγμα λίστας αρχείων: Αρχεία που χρησιμοποιούνται από τη διαδικασία
  6. Πληροφορίες προγραμματισμού CPU: Περιέχει πληροφορίες που σχετίζονται με τον χρόνο και τους πόρους της CPU που διατίθενται στη διαδικασία
  7. Πληροφορίες διαχείρισης μνήμης: Περιλαμβάνει λεπτομέρειες σχετικά με το μέγεθος της μνήμης που χρησιμοποιείται από τη διαδικασία
  8. Πληροφορίες I / O: Λίστα συσκευών εισόδου ή εξόδου που χρησιμοποιούνται από τη διαδικασία

Το Linux χρησιμοποιεί τις ακόλουθες καταστάσεις διεργασίας για να περιγράψει όλες τις διαδικασίες του.

  • Ρ: Διαδικασία τρεξίματος
  • μικρό: Διαδικασία ύπνου
  • ρε: Διακοπής διαδικασία ύπνου
  • Τ: Τερματισμένη διαδικασία
  • Ζ: Διαδικασία ζόμπι

Κάθε φορά που μια διαδικασία ολοκληρώνει την εργασία που έχει ανατεθεί, η κατάσταση της διαδικασίας ορίζεται ως Βρυκόλακας ή Ζ. Κάθε διαδικασία έχει μια γονική διαδικασία που καλεί μια οικογένεια συναρτήσεων που ονομάζεται Περίμενε() που περιμένει την αλλαγή της κατάστασης μιας διαδικασίας. Για παράδειγμα, εάν η κατάσταση της διαδικασίας αλλάξει από Τρέξιμο προς την Βρυκόλακας, ο Περίμενε() η μέθοδος θα ενεργοποιηθεί.

ο Περίμενε() Η μέθοδος συνήθως διαγράφει το μπλοκ ελέγχου διεργασίας που σχετίζεται με αυτήν τη διαδικασία ζόμπι και, στη συνέχεια, καταργεί την είσοδο αυτής της διαδικασίας από τον πίνακα διαδικασίας.

Αλλά μερικές φορές, λόγω της κακής ανάπτυξης ενός προγράμματος, η γονική διαδικασία δεν καλεί το Περίμενε() λειτουργία. Και ως αποτέλεσμα, το σύστημα δεν διαγράφει το PCB της διαδικασίας ζόμπι. Η καταχώριση του πίνακα διεργασίας για τη συγκεκριμένη διαδικασία παραμένει ανέπαφη.

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

Μάθε περισσότερα: Τρόποι για να σκοτώσετε προγράμματα που δεν ανταποκρίνονται στο Linux

Πώς να βρείτε διαδικασίες Zombie;

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

Κατ 'αρχάς, πρέπει να ελέγξετε εάν ο πίνακας επεξεργασίας του συστήματός σας διαθέτει διαδικασία ζόμπι. Μπορείτε να το κάνετε εύκολα χρησιμοποιώντας το μπλουζα εντολή. Απλώς ανοίξτε το τερματικό σας και πληκτρολογήστε:

μπλουζα

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

Μπορείτε να παραθέσετε πληροφορίες που σχετίζονται με αυτές τις διεργασίες ζόμπι μέσω σωληνώσεων την εντολή ps με π.χ.. Το Egrep είναι μια επέκταση της εντολής grep στο Linux που αντιμετωπίζει όλα τα μοτίβα ως εκτεταμένη συμβολοσειρά regex.

Σχετιζομαι με: Ο οδηγός για αρχάριους για τακτικές εκφράσεις με τον Python

Πληκτρολογήστε την ακόλουθη εντολή για να απαριθμήσετε όλες τις διεργασίες ζόμπι:

ps aux | egrep "Z | ανενεργό"

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

Killing Zombie Processes Χρησιμοποιώντας την εντολή kill

Τώρα που γνωρίζετε ποιες διαδικασίες ζόμπι καταναλώνουν επί του παρόντος τους πόρους του συστήματός σας, είναι καιρός να σκοτώσετε αυτές τις διαδικασίες.

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

Για να σκοτώσετε τις διεργασίες ζόμπι χωρίς να κλείσετε τον διακομιστή σας, σημειώστε το αναγνωριστικό διεργασίας οποιασδήποτε διαδικασίας ζόμπι. Από την προηγούμενη ενότητα, μπορούμε να δούμε ότι το PID της διαδικασίας ζόμπι ήταν το 18614. Στη συνέχεια, χρησιμοποιήστε αυτό το PID για να βρείτε το αναγνωριστικό της γονικής διαδικασίας.

ps -o ppid = -p 18614

Παραγωγή:

18613

Επαληθεύστε εάν το αναγνωριστικό γονικής διαδικασίας υπάρχει χρησιμοποιώντας το ΥΣΤΕΡΟΓΡΑΦΟ εντολή.

ps-ε | grep 18613

Τώρα που επιβεβαιώσαμε την ύπαρξη της γονικής διαδικασίας, είναι καιρός να την σκοτώσουμε. Πέρνα το -SIGKILL σημαία με το σκοτώνω εντολή ως εξής:

sudo kill -SIGKILL 18613

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

Διαχείριση αποτελεσματικών διεργασιών σε Linux

Κάθε διαχειριστής συστήματος πρέπει να δίνει προτεραιότητα στις διαδικασίες παρακολούθησης που εκτελούνται σε έναν υπολογιστή Linux. Παρόλο που οι διεργασίες ζόμπι δεν είναι απαραίτητα επιβλαβείς για το σύστημά σας, μπορούν να προκαλέσουν προβλήματα απόδοσης εάν υπάρχουν σε μεγάλο αριθμό.

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

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Τι είναι μια διαδικασία στο Linux;

Η κατανόηση της διαδικασίας και των εργασιών είναι μια βασική πτυχή για να αντιμετωπίσετε το Linux. Εδώ πρέπει να γνωρίζετε.

Διαβάστε Επόμενο

Σχετικά θέματα
  • Linux
  • Linux
  • Επεξεργασία
Σχετικά με τον Συγγραφέα
Deepesh Sharma (Δημοσιεύθηκαν 45 άρθρα)

Ο Deepesh είναι ο Junior Editor για Linux στο MUO. Γράφει ενημερωτικό περιεχόμενο στο Διαδίκτυο για πάνω από 3 χρόνια. Στον ελεύθερο χρόνο του, του αρέσει να γράφει, να ακούει μουσική και να παίζει κιθάρα.

Περισσότερα από τον Deepesh Sharma

Εγγραφείτε στο Newsletter μας

Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Ένα ακόμη βήμα…!

Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.

.