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

Αναγκαστικά τερματισμός διεργασιών με κακή συμπεριφορά χρησιμοποιώντας αυτές τις εντολές Linux

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

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

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

Γιατί να σκοτώσετε μια διαδικασία;

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

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

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

Χρησιμοποιώντας το pgrep εντολή

Οι περισσότεροι από τους χρήστες Linux είναι εξοικειωμένοι με το grep εντολή. ο pgrep η εντολή μπορεί να χρησιμοποιηθεί σε παρόμοιες γραμμές του grep.

pgrep εντολή όταν χρησιμοποιείται, εμφανίζει το pid της διαδικασίας που εκτελείται όπως καθορίζεται στην εντολή. Αυτή η εντολή θα αποδειχθεί πολύ χρήσιμη κατά τη χρήση του pkill εντολή.

Γενική Σύνταξη:

pgrep [επιλογές] [μοτίβο]

Σημαντικές επιλογές διαθέσιμες με το pgrep εντολή

ΕπιλογήΠεριγραφή
-uΑναγνωριστικό διαδικασίας λίστας που ανήκει σε συγκεκριμένο χρήστη
-ντομετρήστε τον αριθμό των διαδικασιών αντιστοίχισης
-ΕΓΩλίστα μόνο ονομάτων διεργασιών
-έναλίστα της πλήρους διαδρομής του ονόματος της διαδικασίας

Ας δείξουμε τη χρήση του pgrep εντολή χρησιμοποιώντας ένα παράδειγμα.

pgrep -u gaurav gnome

Εδώ, θέλουμε να δούμε το pids του gnome διαδικασίας που ανήκει στον χρήστη «gaurav». Επιλογή -u σας επιτρέπει να παραθέσετε το pids των διαδικασιών που ανήκουν σε συγκεκριμένο χρήστη. Σε αυτήν την περίπτωση, ο χρήστης gaurav.

Παραγωγή:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Καθώς προχωράμε με αυτό το σεμινάριο, pgrep Η εντολή θα μας βοηθήσει να επιβεβαιώσουμε εάν η διαδικασία έχει σβήσει ή αν εξακολουθεί να εκτελείται.

Ας περάσουμε τώρα στο pkill εντολή και την εκτέλεσή της.

Χρησιμοποιώντας pkill εντολή

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

Οι διεργασίες μπορούν να καθοριστούν με το πλήρες όνομά τους ή το μερικό όνομα κατά τη χρήση του pkill εντολή. Ακόμα κι αν εισαγάγετε το μερικό όνομα της διαδικασίας, το pkill Η εντολή θα αντιστοιχίσει όλες τις διεργασίες που εκτελούνται με το αντίστοιχο όνομα που έχετε εισαγάγει στην εντολή.

Σύνταξη:

pkill [επιλογές][process_name_pattern] 

Παράδειγμα:

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

μπλουζα
κορυφή - 14:24:02 επάνω 3:12, 1 χρήστης, μέσος όρος φόρτωσης: 0,29, 0,48, 0,58 Εργασίες: 221 συνολικά, 1 τρέξιμο, 172 κοιμούνται, 0 σταμάτησαν, 1 ζόμπι %CPU(s): 5,6 us, 1,0 sy , 0,0 ni, 92,9 id, 0,4 wa, 0,0 hi, 0,1 si, 0,0 st KiB Mem : 3928240 συνολικά, 610456 δωρεάν, 2233152 χρησιμοποιημένα, 1084632 buff/cache KiB Swap συνολικά: 8874, 4083 1187268 αποτέλεσμα Mem PID ΧΡΗΣΤΗ PR NI Virt ΑΠΕ SHR S% CPU% ΜΕΜ TIME + Command 4077 Gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13.23 περιεχόμενο Web 3712 Gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28.39 MainThread 2010 Gaurav 20 0 4084232 111096 45024 S 1.7 2.8 3: 14.85 gnome-shell 1197 ρίζας 20 0 1039612 33704 22988 S 1.0 0.9 3: 04,42 Xorg 1426 CouchDB 20 0 3772396 16908 2520 S 0,7 0,4 1: 50.83 beam.smp 3288 Gaurav 20 0 722480 25048 18272 S 0.7 0.6 0: 06,84 gnome-terminal- 3915 Gaurav 20 0 2804900 231524 111228 S 0.7 5.9 0: 54,42 Περιεχόμενο Web 4146 Gaurav 20 0 3017924 245304 120604 S 0.7 6.2 2: 01.21 Περιεχόμενο Web 4417 Gaurav 20 0 2964208 234396 119160 S 0.7 6.0 0 . 

Χρησιμοποιώντας μπλουζα Η εντολή θα εμφανίσει πολλαπλές διεργασίες στο τερματικό σας. Ας προσπαθήσουμε να εμφανίσουμε τη διαδικασία με ένα συγκεκριμένο όνομα. Θα χρησιμοποιήσουμε το grep εντολή για εμφάνιση μιας διεργασίας της οποίας το όνομα ταιριάζει με τη συμβολοσειρά «mongo».

κορυφή | grep -i mongo

Σημείωση: Εδώ, χρησιμοποίησα την επιλογή -i για να κάνω την αναζήτηση χωρίς διάκριση πεζών-κεφαλαίων.

Η έξοδος αυτής της εντολής θα εμφανίσει τις διεργασίες που ταιριάζουν με το όνομα "mongo"

 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.22 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1.0 0.1 1: 03,25 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1.0 0.1 1: 03,36 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.38 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.40 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1.0 0.1 1: 03,43 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.45 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1.0 0.1 1: 03,48 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1.0 0.1 1: 03,52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Τώρα, θα χρησιμοποιήσουμε το pkill εντολή για να σκοτώσει τη διαδικασία που ονομάζεται «mongo».

σκοτώστε το mongo

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

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Αυτή η εντολή δεν θα επιστρέψει καμία τιμή. Αυτό επιβεβαιώνει ότι η διαδικασία «mongo» σκοτώνεται τώρα χρησιμοποιώντας το pkill εντολή.

Επιλογές που χρησιμοποιούνται συχνά με pkill εντολή

Κατά τη χρήση του pkill εντολή θα χρειαστούμε τις αναφερόμενες επιλογές για σωστή και αβίαστη χρήση του pkill εντολή.

ΕπιλογέςΠεριγραφή
-φάαντιστοίχιση με πλήρη ορίσματα, συμπεριλαμβανομένων κενών, εισαγωγικών, ειδικών χαρακτήρων
-uγια να ενημερώσετε τη διαδικασία pkill ώστε να ταιριάζει με τη διαδικασία που εκτελείται από τον καθορισμένο χρήστη
-1επαναφορτώνει τη διαδικασία
-9σκοτώνει τη διαδικασία
-15ματαιώνει με χάρη μια διαδικασία

Ας δούμε ένα ακόμη παράδειγμα pkill εντολή χρησιμοποιώντας το -φά επιλογή.

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

ping bbc.com ping youtube.com

Και οι δύο διαδικασίες ξεκινούν από το ping εντολή. Τώρα, ας υποθέσουμε ότι θέλουμε να τερματίσουμε μόνο μία διαδικασία "ping youtube.com", τότε πρέπει να χρησιμοποιήσουμε το -φά επιλογή με το pkill εντολή που σκοτώνει μια διεργασία με συγκεκριμένο όνομα, συμπεριλαμβανομένων των διαστημάτων και των εισαγωγικών από το όνομα της διεργασίας.

Εντολή:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Αποτέλεσμα:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) byte δεδομένων. 64 byte από bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 byte από bom12s08-in-f14.1e100.net.net : 76. =117 time=121 ms 64 byte από bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86,5 ms 64 byte από bom12s08-in-.6.200. ): icmp_seq=207 ttl=117 time=105 ms Τερματισμός gaurav@ubuntu:~$ 

Εδώ, το «ping στο youtube.com"Η διαδικασία έχει πλέον σκοτωθεί και το "ping bbc.com" εξακολουθεί να λειτουργεί στο τερματικό.

Σε περίπτωση που, αν είχαμε χρησιμοποιήσει το pkill ping εντολή, θα είχε σκοτώσει και τους δύο ping διαδικασίες, κάτι που είναι ανεπιθύμητο.

Σήματα που χρησιμοποιούνται με pkill εντολή

pkill αναγκάζει μια διαδικασία να τερματιστεί στέλνοντας ένα συγκεκριμένο σήμα σε αυτή τη διαδικασία. Υπάρχουν τρία πιθανά σήματα τα οποία pkill εντολή θα μπορούσε να σταλεί στη διεργασία ανάλογα με την εντολή που δίνει ο χρήστης.

Ακολουθεί η λίστα με τα διαθέσιμα σήματα.

ΣήμαΠροσδιορισμός
1(HUP)φορτώνει ξανά την καθορισμένη διαδικασία
9 (ΣΚΟΤΩΝΩ)σκοτώνει την καθορισμένη διαδικασία
15 (ΟΡΟΣ)σταματά ή ματαιώνει απαλά την καθορισμένη διαδικασία

Για αυτό το σεμινάριο, θα βασιστούμε σε μεγάλο βαθμό στο ΣΚΟΤΩΝΩ σήμα. Ας δούμε μερικά παραδείγματα για να το καταλάβουμε καλύτερα.

Χρησιμοποιώντας το pgrep εντολή για να πάρετε το pid αντιστοίχιση με το όνομα apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -Kill apache

Ή μπορείτε επίσης να χρησιμοποιήσετε την εντολή με αριθμούς (π.χ. 1, 9, 15)

pkill -9 απάτσι

Και οι δύο εντολές που εμφανίζονται παραπάνω θα σκοτώσουν τη διαδικασία apache. Επιβεβαίωση με το pgrep εντολή ξανά.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Όπως το pgrep εντολή δεν επιστρέφει έξοδο, αποδεικνύει ότι η διαδικασία apache έχει σκοτωθεί.

συμπέρασμα

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

Κατηγορία: Linux