Πώς να σκοτώσετε τη διαδικασία Linux χρησιμοποιώντας τα Kill, Pkill και Killall


Στο Linux, η θανάτωση μιας διαδικασίας αναφέρεται στον τερματισμό ή τη διακοπή της εκτέλεσης ενός προγράμματος που εκτελείται. Σε κάθε εκτελούμενη διεργασία εκχωρείται ένας μοναδικός αναγνωριστικός αριθμός γνωστός ως Αναγνωριστικό διεργασίας (PID), ο οποίος βοηθά το σύστημα να παρακολουθεί τις τρέχουσες ενεργές διεργασίες.

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

Τι είναι η διαδικασία Linux

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

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

Τι είναι το Kill Command

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

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

  • Για να σταματήσει οποιαδήποτε αυτοματοποιημένη διαδικασία.
  • Για να σταματήσει μια διαδικασία που έχει ξεκινήσει κατά λάθος.
  • Για να σταματήσετε μια διαδικασία που χρησιμοποιεί υπερβολική μνήμη.
  • Για να τερματίσετε αναγκαστικά οποιαδήποτε διαδικασία που εκτελείται στο Linux.
  • Για να σταματήσετε μια διαδικασία που εκτελείται στο παρασκήνιο.

Η χρήση της εντολής kill από το /usr/bin σας παρέχει ορισμένες επιπλέον δυνατότητες για να σκοτώσετε μια διεργασία ανά όνομα διεργασίας χρησιμοποιώντας το pkill, το οποίο προσδιορίζει διεργασίες από τα ονόματά τους.

Πώς να βρείτε το αναγνωριστικό διαδικασίας ή το όνομα διεργασίας

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

ps -ef

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

ps -ef | grep mariadb

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

pgrep mariadb

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

Πριν σκοτώσετε, σταματήσετε ή τερματίσετε μια διαδικασία, σκεφτείτε τα δικαιώματα. Εάν είστε χρήστης root, μπορείτε να σταματήσετε οποιαδήποτε διαδικασία, αλλά εάν είστε κανονικός χρήστης, πρέπει να προσθέσετε ένα "sudo" πριν από την εντολή ή να μεταβείτε σε μια ρίζα με " su” για να χρησιμοποιήσετε την εντολή τερματισμού.

Η κοινή σύνταξη για την εντολή kill είναι:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

Για μια εντολή kill ένα Όνομα σήματος θα μπορούσε να είναι:

Σαφώς από την παραπάνω συμπεριφορά:

  • Το SIGTERM είναι ο προεπιλεγμένος και ασφαλέστερος τρόπος για να τερματίσετε μια διαδικασία.
  • Το SIGHUP είναι ένας λιγότερο ασφαλής τρόπος για να τερματίσετε μια διαδικασία από το SIGTERM.
  • Το SIGKILL είναι ο πιο ανασφαλής τρόπος από τους τρεις παραπάνω, για να σκοτώσετε μια διαδικασία που τερματίζει μια διαδικασία χωρίς αποθήκευση.

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

kill -l

Ενώ υπάρχουν πολλά διαθέσιμα σήματα, αλλά στις περισσότερες περιπτώσεις χρησιμοποιούμε μόνο SIGKILL (9) και SIGTERM (15).

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

Κάθε διεργασία στο Linux έχει ένα pid. Η πρώτη διαδικασία που ξεκινά κατά την εκκίνηση του συστήματος Linux είναι η – διεργασία έναρξης, επομένως της εκχωρείται μια τιμή «1» στις περισσότερες περιπτώσεις.

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

Προτού προχωρήσουμε και εκτελέσουμε μια εντολή kill, πρέπει να σημειώσετε ορισμένα σημαντικά σημεία:

  • Ένας χρήστης μπορεί να σκοτώσει όλες τις διαδικασίες του.
  • Ένας χρήστης δεν μπορεί να σκοτώσει τη διαδικασία άλλου χρήστη.
  • Ένας χρήστης δεν μπορεί να σκοτώσει τις διαδικασίες που χρησιμοποιεί το σύστημα.
  • Ένας χρήστης root μπορεί να σκοτώσει τη διαδικασία σε επίπεδο συστήματος και τη διαδικασία οποιουδήποτε χρήστη.

Για να σκοτώσετε τη διαδικασία mariadb PID, χρησιμοποιήστε την εντολή kill όπως φαίνεται.

kill -9 3383

Η παραπάνω εντολή θα σκοτώσει τη διαδικασία που έχει pid=3383, όπου το PID είναι μια Αριθμητική τιμή της διαδικασίας.

Ένας άλλος τρόπος εκτέλεσης της ίδιας λειτουργίας μπορεί να ξαναγραφτεί ως.

kill -SIGTERM 3383

Ομοίως, το "kill -9 PID" είναι παρόμοιο με το "kill -SIGKILL PID" και αντίστροφα.

Για να επιβεβαιώσετε ότι η διαδικασία έχει τερματιστεί, μπορείτε να χρησιμοποιήσετε ξανά την εντολή ps.

ps -ef | grep mariadb

Πώς να σκοτώσετε πολλές διεργασίες στο Linux

Για να τερματίσετε πολλές διεργασίες στο Linux χρησιμοποιώντας τα αναγνωριστικά διεργασίας τους (PID), μπορείτε να χρησιμοποιήσετε την εντολή kill σε συνδυασμό με τους σχετικούς αριθμούς PID.

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

ps aux | grep apache2
OR
pgrep apache2

Αφού έχετε τα PID, χρησιμοποιήστε την εντολή kill για να τα τερματίσετε.

kill -9 PID1 PID2 PID3

Πώς να σκοτώσετε μια διαδικασία στο Linux χρησιμοποιώντας το όνομα διαδικασίας

Για να τερματίσουμε μια διαδικασία χρησιμοποιώντας το όνομα διεργασίας, θα χρησιμοποιήσουμε την εντολή pkill, η οποία είναι μια έκδοση της εντολής kill που σας επιτρέπει να αναφέρετε το όνομα της διεργασίας ή ένα μοτίβο για να εντοπίστε μια διαδικασία.

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

pkill mysqld

Τι γίνεται αν μια διεργασία έχει πάρα πολλές παρουσίες και πολλές θυγατρικές διεργασίες, έχουμε μια εντολή «killall» που παίρνει το όνομα της διεργασίας ως όρισμα στη θέση του αριθμού διεργασίας.

Πώς να σκοτώσετε μια διαδικασία στο Linux χρησιμοποιώντας την εντολή Killall

Η κύρια διάκριση μεταξύ killall και kill είναι ότι το killall μπορεί να τερματίσει μια διαδικασία με το όνομά της, ενώ η εντολή kill βασίζεται στο αναγνωριστικό διεργασίας (pid).

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

killall mysqld
OR
pkill mysqld

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

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

Εργαλεία παρακολούθησης γραφικών συστημάτων Linux όπως το htop ή το gnome-system-monitor παρέχουν μια φιλική προς το χρήστη διεπαφή για την εύρεση και την εξάλειψη διεργασιών.

συμπέρασμα

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