Πώς να σκοτώσετε μια διαδικασία στο Linux

Όλοι είχαμε εκείνες τις μέρες που ο υπολογιστής μας λειτουργεί εξαιρετικά αργά και τραυλίζει στην εκτέλεση ακόμη και των βασικών εργασιών. Στα Windows, έχετε μόνο τη Διαχείριση εργασιών των Windows για να επιθεωρήσετε και να σκοτώσετε διεργασίες που δεν είναι τόσο σημαντικές αλλά καταναλώνουν τεράστιες ποσότητες μνήμης. Ωστόσο, στο Linux, έχετε ένα ολόκληρο οπλοστάσιο εντολών και εργαλείων GUI για να διαχειριστείτε αυτές τις εργασίες. Σε αυτό το άρθρο, θα δείξουμε μερικές εύκολες μεθόδους γραμμής εντολών (CLI) καθώς και μεθόδους GUI για το πώς να σκοτώσετε μια διαδικασία στο Linux.

Τερματισμός Διαδικασίας στο Linux (2023)

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

Τι είναι οι διεργασίες στο Linux

Στο Linux, κάθε τρέχουσα παρουσία ενός προγράμματος είναι γνωστή ως “διαδικασία”, ενώ κάθε εκτελέσιμο αρχείο είναι γνωστό ως πρόγραμμα. Όταν εκτελείται οποιοδήποτε πρόγραμμα, δημιουργείται μια διεργασία και σε κάθε διεργασία εκχωρείται ένας μοναδικός 5ψήφιος αναγνωριστικός αριθμός γνωστός ως «αναγνωριστικό διεργασίας». Όταν μια διεργασία έχει τελειώσει ή τερματιστεί αναγκαστικά, το αναγνωριστικό διεργασίας της εκχωρείται στην επόμενη διεργασία.

Kill Process μέσω γραμμής εντολών στο Linux

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

Σήματα τερματισμού

Όταν προσπαθείτε να σκοτώσετε μια διεργασία είτε από το GUI είτε από το CLI στο Linux, ο πυρήνας στέλνει ένα σήμα τερματισμού στη διεργασία. Η διαδικασία ενεργεί ανάλογα, ανάλογα με το σήμα που λαμβάνεται. Σε καθένα από αυτά τα σήματα εκχωρείται ένας συγκεκριμένος αριθμός για να κατανοήσει γρήγορα το πρόγραμμα. Υπάρχουν πολλοί τύποι σημάτων τερματισμού, αλλά έχουμε εξηγήσει μόνο τα βασικά εδώ:

SignalNumeric ValueDescriptionSIGHUP1Αντιπροσωπεύει το “Signal Hangup”
Αποστέλλεται όταν το τερματικό είναι κλειστό.SIGINT2 Αντιπροσωπεύει “Διακοπή σήματος”
Αποστέλλεται όταν ο χρήστης τερματίσει τη διαδικασία.SIGKILL9Αυτό σημαίνει «Σκοτώση σήματος»
Αποστέλλεται όταν πρέπει να τερματίσετε μια διαδικασία αμέσωςSIGTERM15 Αντιπροσωπεύει “Τερματισμός σήματος”
Αποστέλλεται όταν πρέπει να τερματίσετε μια διαδικασία και να αποδεσμεύσετε τους πόρους που καταναλώθηκανSIGSTOP19 – για ARM, x86
17 – για τον ALPHA
23 – για MIPS
24 – για το PA-RISCit σημαίνει «Διακοπή σήματος»
Αποστέλλεται όταν χρειάζεται να διακόψετε μια διαδικασία και να τη συνεχίσετε αργότερα. Τα πιο συχνά χρησιμοποιούμενα σήματα είναι το SIGKILL (9) και το SIGTERM (15).

Προσδιορίστε τα αναγνωριστικά διαδικασίας

Προτού τερματίσετε μια διαδικασία, πρέπει να γνωρίζετε ορισμένες λεπτομέρειες της διαδικασίας, όπως το αναγνωριστικό διεργασίας, τον χρόνο εκτέλεσης κ.λπ. Για να γνωρίζετε τις λεπτομέρειες μιας διαδικασίας, χρησιμοποιήστε την εντολή ps:

  Πώς να παίξετε Were Here Together στο Linux

ΥΣΤΕΡΟΓΡΑΦΟ

Με την εντολή ps, πρέπει να αναζητήσετε τη διαδικασία κάνοντας κύλιση και σημειώνοντας το όνομά της, κάτι που μπορεί να είναι δυσκίνητο. Αντ ‘αυτού, μπορείτε ακόμη και να χρησιμοποιήσετε την εντολή grep με την εντολή ps σε μια διοχέτευση, όπως φαίνεται παρακάτω:

ps | grep <όνομα_διαδικασίας>

Για να κάνουμε τα πράγματα πιο απλά, υπάρχει μια ξεχωριστή εντολή που δείχνει μόνο το αναγνωριστικό διεργασίας οποιασδήποτε εκτελούμενης διεργασίας που πρέπει να γνωρίζετε. Η σύνταξη για τη χρήση της εντολής pidof είναι:

pidof <όνομα_διαδικασίας>

Τερματίστε τη διαδικασία χρησιμοποιώντας την εντολή kill

Αφού σημειώσετε το αναγνωριστικό διεργασίας της διαδικασίας που θέλετε να τερματίσετε, η πιο κοινή εντολή που χρησιμοποιείται για τον τερματισμό προγραμμάτων στο σύστημα Linux σας είναι η εντολή kill. Η σύνταξη για τη χρήση της εντολής kill είναι:

σκοτώστε

Η παράμετρος είναι προαιρετική και η εντολή kill στέλνει το σήμα SIGTERM (15) από προεπιλογή. Μπορείτε να στείλετε οποιοδήποτε άλλο σήμα με βάση την αριθμητική του τιμή ή το πραγματικό όνομα του σήματος από τον παραπάνω πίνακα.

Τερματίστε τη διαδικασία χρησιμοποιώντας την εντολή pkill

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

pkill <επιλογές> <μοτίβο>

Μερικές από τις κοινές επιλογές για σύζευξη με την εντολή pkill είναι:

OptionDescription-nΕπιλέγει μόνο τις πιο πρόσφατες διεργασίες που ταιριάζουν με τη διαδικασία id-uΕπιλέγει τις διεργασίες που ανήκουν σε έναν συγκεκριμένο χρήστη-xΕπιλογή διεργασιών που αντιστοιχούν ακριβώς στο μοτίβο

Αυτό είναι ιδιαίτερα σημαντικό όταν πολλοί χρήστες εργάζονται σε διαφορετικές παρουσίες του ίδιου προγράμματος στο ίδιο σύστημα και μία από τις παρουσίες αρχίζει να έχει κάποια απροσδόκητη συμπεριφορά. Για παράδειγμα, στο παρακάτω στιγμιότυπο οθόνης, σκοτώνουμε την παρουσία «gedit» που ανήκει στον χρήστη «intel» χρησιμοποιώντας την εντολή pkill στο Linux:

pkill -u intel gedit

Τερματίστε τη διαδικασία χρησιμοποιώντας την εντολή killall

Η εντολή killall λειτουργεί παρόμοια με την εντολή kill, αλλά σκοτώνει όλες τις διεργασίες που ταιριάζουν με το όνομα της διεργασίας ανεξάρτητα από τον χρήστη. Από προεπιλογή, στέλνει το σήμα SIGTERM εάν δεν ορίζεται διαφορετικά. Ένα ενδιαφέρον πράγμα που πρέπει να σημειωθεί είναι ότι η εντολή killall δεν μπορεί ποτέ να αυτοκτονήσει, αλλά μπορεί να τερματίσει άλλες περιπτώσεις της εντολής killall. Η σύνταξη για τη χρήση της εντολής killall είναι:

killall

Μερικές από τις επιλογές για σύζευξη με την εντολή killall είναι:

OptionDescription-rΕρμηνεύει το process_name ως regex μοτίβο και στη συνέχεια σκοτώνει τις διεργασίες που ταιριάζουν με το μοτίβο-ukills την καθορισμένη διεργασία που ανήκει σε έναν καθορισμένο κάτοχο.-oΚαταστρέφει τις καθορισμένες διεργασίες παλαιότερες (ξεκίνησαν πριν) από μια συγκεκριμένη ώρα.-yΚαταστρέφει τις καθορισμένες διεργασίες νεότερες ( ξεκίνησε μετά) τη συγκεκριμένη ώρα.

Η εντολή killall μπορεί να είναι χρήσιμη για τον τερματισμό μιας σειράς της ίδιας διαδικασίας ή ακόμα και όλων των διεργασιών που ανήκουν σε έναν συγκεκριμένο ιδιοκτήτη. Εδώ στο παράδειγμά μας, σκοτώνουμε όλες τις διαδικασίες του “sleeping for 500 seconds” χρησιμοποιώντας την εντολή killall στο Linux:

  Πώς να χρησιμοποιήσετε το Hugo Static Site Generator στο Linux

killall -v ύπνος

Τερματίστε τη διαδικασία Linux χρησιμοποιώντας την εντολή top/htop

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

μπλουζα

Κατανόηση της εξόδου:

Η κύρια έξοδος της εντολής top χωρίζεται σε στήλες που είναι:

  • PID – εμφανίζει το αναγνωριστικό διεργασίας της εκτελούμενης διαδικασίας
  • Χρήστης – δείχνει τον κάτοχο της διαδικασίας
  • PR – δείχνει την τιμή προτεραιότητας της διαδικασίας που έχει εκχωρηθεί από το λειτουργικό σύστημα
  • NI – δείχνει τις ωραίες τιμές που είναι σαν να εκχωρείτε τιμές σε διάστημα χρήστη για τον μη αυτόματο έλεγχο της προτεραιότητας μιας εργασίας.
  • VIRT – δείχνει την ποσότητα της εικονικής μνήμης που χρησιμοποιείται από τη διαδικασία.
  • RES – δείχνει την ποσότητα της φυσικής μνήμης που χρησιμοποιείται από τη διαδικασία
  • SHR – δείχνει την ποσότητα της μνήμης που μοιράζεται άλλες διεργασίες
  • S – δείχνει την τρέχουσα κατάσταση της διαδικασίας που μπορεί να είναι:
    • D – αδιάκοπος ύπνος
    • R – τρέξιμο
    • S – ύπνος
    • Τ – σταμάτησε
    • Ζ – ζόμπι
  • %CPU – Εμφανίζει την ποσότητα της CPU που χρησιμοποιείται από τη διαδικασία σε ποσοστό
  • %MEM – Εμφανίζει την ποσότητα της μνήμης RAM που χρησιμοποιείται από τη διαδικασία σε ποσοστό
  • TIME+ – Δείχνει τον συνολικό χρόνο εκτέλεσης της διαδικασίας
  • Command – Δείχνει ποια εντολή κλήθηκε για τη διαδικασία.
  • Εάν δεν γνωρίζετε το αναγνωριστικό διαδικασίας της εργασίας που θέλετε να σκοτώσετε, είτε πλοηγηθείτε στη λίστα χρησιμοποιώντας τα πλήκτρα βέλους είτε αναζητήστε το όνομα της διαδικασίας στον πίνακα διεργασιών στο Linux.

    Για να αναζητήσετε το όνομα της διαδικασίας, πατήστε ‘L’ στο πληκτρολόγιο και πληκτρολογήστε το όνομα της διαδικασίας που θέλετε να αναζητήσετε. Μόλις βρείτε την κακή διαδικασία, πατήστε ‘k’ στο πληκτρολόγιο για να σκοτώσετε τη διαδικασία. Τώρα, εισαγάγετε το αναγνωριστικό διαδικασίας ή αφήστε το στην τρέχουσα επισημασμένη διαδικασία και πατήστε ‘ENTER’. Στη συνέχεια, εισάγετε το σήμα τερματισμού και, στη συνέχεια, πατήστε «ENTER» για να τερματίσετε το πρόγραμμα. Για να επιστρέψετε στο τερματικό, πατήστε ‘q’ στο πληκτρολόγιο.

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

    sudo apt install -y htop

      Πώς να παίξετε το Warhammer 40.000: Space Marine σε Linux

    Για να χρησιμοποιήσετε το htop για τη διαχείριση διαδικασιών στο Linux, χρησιμοποιήστε την παρακάτω εντολή:

    htop

    Για να σκοτώσετε ένα πρόγραμμα, μεταβείτε στο όνομα της διαδικασίας που θέλετε να τερματίσετε, πατήστε ‘F9’ και μετά πατήστε Enter. Εάν θέλετε να αναζητήσετε και να σκοτώσετε οποιοδήποτε πρόγραμμα, πατήστε ‘F3’ στο πληκτρολόγιο, πληκτρολογήστε το όνομα και πατήστε Enter. Το όνομα της διαδικασίας θα επισημανθεί, πατήστε F9 και, στη συνέχεια, πατήστε Enter στο πληκτρολόγιο για να τερματίσετε τη διαδικασία.

    Σκοτώστε μια διαδικασία μέσω της οθόνης συστήματος στο Linux

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

    1. Μόλις ανοίξει το εργαλείο παρακολούθησης συστήματος, θα δείτε τρεις καρτέλες στην κορυφή με το όνομα — Διεργασίες, Πόροι και Σύστημα αρχείων. Για να διαχειριστείτε τις διαδικασίες σας, μεταβείτε στην καρτέλα “Διαδικασίες”. Εδώ, θα δείτε όλες τις τρέχουσες διεργασίες σας. Πατήστε ‘CTRL+F’ για να αναζητήσετε ένα όνομα διεργασίας. Κάντε κλικ στο όνομα της διαδικασίας που θέλετε να τερματίσετε και κάντε κλικ στο «Τερματισμός διαδικασίας».

    2. Στη συνέχεια, θα λάβετε ένα μήνυμα επιβεβαίωσης εάν θέλετε να τερματίσετε τη διαδικασία ή όχι. Προχωρήστε και κάντε κλικ στο μεγάλο κόκκινο κουμπί “Τερματισμός διαδικασίας” για να σκοτώσετε τη διαδικασία στο Linux.

    Συχνές Ερωτήσεις

    Πώς μπορώ να σταματήσω όλες τις διαδικασίες στο Linux;

    Εάν πρέπει να διακόψετε όλες τις διεργασίες (εκτός από το κέλυφος σύνδεσης, τις διεργασίες init και ειδικές για τον πυρήνα) για έναν συγκεκριμένο χρήστη στο Linux, χρησιμοποιήστε είτε την εντολή pkill είτε την εντολή killall σύμφωνα με τη σύνταξη:

    pkill -u <όνομα χρήστη>

    killall -u <όνομα χρήστη>

    Εάν πρέπει να σκοτώσετε κάθε διαδικασία για κάθε χρήστη, συμπεριλαμβανομένου του συστήματος έναρξης, πατήστε τα πλήκτρα ‘ALT + Prt Sc + o’ στο πληκτρολόγιο.

    Είναι εντάξει να τερματιστεί μια διαδικασία;

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

    Ποιες είναι οι διαδικασίες παρασκηνίου στο Linux;

    Στο Linux, οι διεργασίες παρασκηνίου είναι διεργασίες που μπορούν να εκτελεστούν χωρίς την παρουσία του κελύφους ή οποιαδήποτε παρέμβαση χρήστη. Μπορούν να προβληθούν χρησιμοποιώντας οποιαδήποτε από τις εντολές – top, htop, ps, κ.λπ.

    Τι είναι μια διαδικασία ζόμπι;

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

    Τι κάνει το CTRL + Z στο Linux;

    Όταν χρησιμοποιείτε το CTRL + Z στο Linux, στέλνει το σήμα SIGTSTP το οποίο αναστέλλει τη διαδικασία και το στέλνει στο παρασκήνιο. Όταν μια διεργασία βρίσκεται σε κατάσταση αναστολής στο παρασκήνιο, δεν μπορείτε να σκοτώσετε τη διαδικασία έως ότου επαναφερθεί στο προσκήνιο.

    Σκοτώστε τις διαδικασίες στο Linux εύκολα

    Η εξάλειψη των διαδικασιών αποθήκευσης μνήμης είναι μια πολύ σημαντική εργασία που πρέπει να μάθει κάθε χρήστης. Σε αυτό το άρθρο, δείξαμε τόσο τη μέθοδο της γραμμής εντολών, συμπεριλαμβανομένων εντολών όπως killall και pkill, καθώς και τις μεθόδους GUI για την εξάλειψη διεργασιών στο Linux. Έχουμε ακόμη λεπτομερώς πώς να χρησιμοποιήσετε δημοφιλή εργαλεία όπως το top και το htop για τη διαχείριση διαδικασιών στον υπολογιστή σας Linux. Εάν αντιμετωπίζετε προβλήματα κατά τη χρήση αυτών των εργαλείων για να τερματίσετε μια διαδικασία, ενημερώστε μας στα παρακάτω σχόλια.