Η δολοφονία μιας διαδικασίας είναι μερικές φορές ο μόνος τρόπος για να την απαλλαγούμε. Παρά το σκληρό όνομα, η "δολοφονία" μιας διαδικασίας σημαίνει "αναγκάζοντάς την να σταματήσει" Δείτε πώς μπορείτε να το κάνετε από τη γραμμή εντολών Linux ή macOS.
Τι είναι μια διαδικασία;
Η εκτέλεση προγραμμάτων όπως το πρόγραμμα περιήγησής σας, οι διαδικασίες παρασκηνίου που σχετίζονται με το περιβάλλον της επιφάνειας εργασίας σας και οι υπηρεσίες συστήματος Linux είναι όλες διαδικασίες.
Μπορείτε να κάνετε διαδικασίες σε δύο ομάδες:
- Διαδικασίες προσκηνίου είναι αυτά που έχουν ξεκινήσει ή ξεκινήσει από έναν χρήστη Μπορεί να βρίσκονται σε παράθυρο τερματικού ή να είναι γραφική εφαρμογή.
- Ιστορικές διαδικασίες είναι όλες οι διαδικασίες που ξεκινούν αυτόματα και δεν έχουν καμία αλληλεπίδραση με τους χρήστες. Δεν αναμένουν είσοδο από χρήστες ούτε παρουσιάζουν αποτελέσματα ή αποτελέσματα σε αυτούς. Οι βασικές διαδικασίες είναι πράγματα όπως υπηρεσίες και δαίμονες.
Εάν οι διαδικασίες του προσκηνίου είναι το μπροστινό μέρος του προσωπικού του θεάτρου και των ηθοποιών, οι διαδικασίες στο παρασκήνιο είναι η ομάδα «πίσω από τα παρασκήνια» στα παρασκήνια.
Όταν επεξεργάζεται εσφαλμένη συμπεριφορά ή δυσλειτουργία, μπορεί να κάνει υπερβολικό χρόνο CPU, να καταναλώσει τη μνήμη RAM ή να εισέλθει σε έναν σφιχτό υπολογιστικό βρόχο και να μην ανταποκρίνεται. Οι γραφικές εφαρμογές μπορούν να αρνηθούν να ανταποκριθούν στα κλικ του ποντικιού. Οι εφαρμογές τερματικού ενδέχεται να μην σας επιστρέψουν στη γραμμή εντολών.
Η ανθρώπινη απάντηση
«Η δολοφονία» μιας διαδικασίας σημαίνει απλά «αναγκάζοντας τη διαδικασία να σταματήσει». Αυτό μπορεί να είναι απαραίτητο εάν η διαδικασία αρνείται να ανταποκριθεί.
Το Linux παρέχει το
σκοτώνω
,
pkill
, και
δολοφονία
εντολές που σας επιτρέπουν να κάνετε ακριβώς αυτό. Αυτές οι εντολές μπορούν να χρησιμοποιηθούν με οποιονδήποτε τύπο διαδικασίας, γραφικών ή γραμμής εντολών, προσκηνίου ή φόντου.
Η εντολή δολοφονίας
Το υσε
σκοτώνω
, πρέπει να γνωρίζετε το αναγνωριστικό διαδικασίας (PID) της διαδικασίας που θέλετε να τερματίσετε. ο
ΥΣΤΕΡΟΓΡΑΦΟ
εντολή μπορεί να χρησιμοποιηθεί για την εύρεση του PID μιας διαδικασίας.
Να έχω
ΥΣΤΕΡΟΓΡΑΦΟ
αναζήτηση σε όλες τις διαδικασίες χρησιμοποιούν το
-είναι
(όλες οι διαδικασίες) επιλογή. Σωληνώνοντας την έξοδο μέσω
πιο λιγο
ενδείκνυται, θα υπάρξει αρκετά. Τύπος
ΥΣΤΕΡΟΓΡΑΦΟ
, ένας χώρος,
-είναι
, ένας χώρος,
|
(ένας χαρακτήρας σωλήνα), ένας άλλος χώρος και μετά πληκτρολογήστε
πιο λιγο
. Πατήστε Enter για να εκτελέσετε την εντολή.
ps-ε | πιο λιγο
Αυτό θα σας δώσει μια λίστα με διαδικασία που μοιάζει με το παρακάτω στιγμιότυπο οθόνης. Μπορείτε να κάνετε αναζήτηση προς τα εμπρός στο
πιο λιγο
χρησιμοποιώντας το
/
και μπορείτε να κάνετε αναζήτηση προς τα πίσω χρησιμοποιώντας το
?
κλειδί.
Για να ξεκινήσετε τη διαδικασία που σας ενδιαφέρει, διοχετεύστε την έξοδο από
ΥΣΤΕΡΟΓΡΑΦΟ
διά μέσου
λαβή
και καθορίστε το όνομα - ή μέρος του ονόματος - της διαδικασίας.
ps-ε | grep shooter
Μόλις εντοπίσετε το PID της διαδικασίας που θέλετε να τερματίσετε, περάστε το στο
σκοτώνω
εντολή ως παράμετρος. Για να τερματίσετε το
παραθυρόφυλλο
διαδικασία που προσδιορίστηκε από την προηγούμενη εντολή, χρησιμοποιήστε αυτήν την εντολή:
σκοτώστε το 2099
ο
σκοτώνω
Η εντολή είναι ένας σιωπηλός δολοφόνος - δεν σας δίνει σχόλια αν ήταν επιτυχής.
Η εντολή pkill
ο
pkill
Η εντολή σάς επιτρέπει να σκοτώσετε μια διαδικασία - ή διαδικασίες - με το όνομα. Δεν χρειάζεται να προσδιορίσετε τη διαδικασία μέσω PID. Χρησιμοποιώ
pkill
παρέχετε έναν όρο αναζήτησης που
pkill
χρησιμοποιεί για να ελέγξει ενάντια στη λίστα των τρεχουσών διαδικασιών. Οι διαδικασίες αντιστοίχισης τερματίζονται. Επομένως, πρέπει να είστε βέβαιοι ότι έχετε γράψει σωστά αυτόν τον όρο αναζήτησης.
Ως δίχτυ ασφαλείας, μπορείτε να χρησιμοποιήσετε το
pgrep
εντολή
πριν
χρησιμοποιείτε το
pkill
εντολή. ο
pgrep
Η εντολή αποδέχεται επίσης έναν όρο αναζήτησης. Θα εμφανίσει το PID κάθε διαδικασίας που ταιριάζει με τον όρο αναζήτησης. Αυτό είναι ασφαλές γιατί
pgrep
δεν θα εκδώσει κανένα σήμα θανάτωσης στις διεργασίες και εάν πληκτρολογήσετε εσφαλμένα τον όρο αναζήτησης δεν θα σκοτώσετε άλλη διαδικασία κατά λάθος. Μπορείτε να βεβαιωθείτε ότι έχετε ορίσει σωστά τον όρο αναζήτησης προτού τον μεταβιβάσετε
pkill
. Και τα δυο
pkill
και
pgrep
μεταχειριστείτε τον όρο αναζήτησης με τον ίδιο τρόπο. Η θεραπεία τους είναι τόσο παρόμοια που
μοιραστείτε την ίδια σελίδα
.
Ας υποθέσουμε ότι υπάρχει μια διαδικασία με το "subq" στο όνομά του. Θα χρησιμοποιήσουμε το
ps -u dave | grep
εντολή να ρίξετε μια ματιά πίσω από την κουρτίνα. Μπορείτε να δείτε ότι το "subq" θα ταιριάζει με αυτήν τη διαδικασία και αυτή τη διαδικασία μόνο. Αυτό ήταν ακριβώς έτσι ώστε να μπορείτε να δείτε το πλήρες όνομα της διαδικασίας.
ps -u dave | grep subq
Ας υποθέσουμε ότι ο χρήστης μας
δεν έχει
έγινε αυτό; το μόνο που γνωρίζουν είναι το όνομα της διαδικασίας περιέχει το υπόστρωμα «subq». Χρησιμοποιούν
pgrep
για να ελέγξετε ότι υπάρχει μόνο μία αντιστοίχιση με τον όρο αναζήτησης. Στη συνέχεια, χρησιμοποιούν αυτόν τον όρο αναζήτησης με
pkill
.
pgrep υποτ
pkill subq
Μπορείς να χρησιμοποιήσεις
pkill
να σκοτώσει πολλές διαδικασίες ταυτόχρονα. Εδώ εκτελείται ο χρήστης
pgrep
για να ελέγξετε πόσες διαδικασίες ξεκίνησε το Chrome. Χρησιμοποιούν
pkill
να τους σκοτώσει όλους. Στη συνέχεια ελέγχουν
pgrep
ότι έχουν αφαιρεθεί όλα.
pgrep χρώμιο
pkill χρώμιο
pgrep χρώμιο
Εάν εκτελούνται πολλές διαδικασίες με το ίδιο όνομα, αλλά δεν θέλετε να τις σκοτώσετε όλες, μπορείτε να τις χρησιμοποιήσετε
pgrep
με την
-φά
(γραμμή εντολών) επιλογή για να προσδιορίσετε ποια διαδικασία είναι ποια. Ένα απλό παράδειγμα θα ήταν δύο
πινγκ
διαδικασίες. Θέλετε να σκοτώσετε έναν από αυτούς αλλά όχι τον άλλο. Μπορείτε να χρησιμοποιήσετε τις γραμμές εντολών τους για να κάνετε διάκριση μεταξύ τους. Σημειώστε τη χρήση εισαγωγικών για να τυλίξετε την παράμετρο της γραμμής εντολών.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Η εντολή killall
Προειδοποίηση
: Στα λειτουργικά συστήματα Solaris και OpenIndiana το
δολοφονία
η εντολή θα
σκοτώστε όλες τις διαδικασίες που σας ανήκουν
. Εάν είναι root ή εάν έχετε εκδώσει
sudo killall
θα επανεκκινήσετε τον υπολογιστή σας! Κατά τη διάρκεια της έρευνας για αυτό το άρθρο, αυτή η συμπεριφορά επιβεβαιώθηκε με την τελευταία έκδοση του OpenIndiana Hipster 2018.10.
ο
δολοφονία
εντολή
λειτουργεί με παρόμοιο τρόπο
στο
pkill
εντολή αλλά με μια συγκεκριμένη διαφορά. Αντί να περάσετε έναν όρο αναζήτησης στην εντολή, πρέπει να δώσετε το ακριβές όνομα της διαδικασίας.
Δεν μπορείτε να δώσετε μερική αντιστοίχιση σε ένα όνομα διαδικασίας. πρέπει να δώσετε ολόκληρο το όνομα της διαδικασίας, όπως φαίνεται:
δολοφονία
κλείσιμο κλείστρου
ο
-Ν
Η επιλογή (νεότερη από) σάς επιτρέπει να σκοτώνετε διαδικασίες που εκτελούνται
πιο λιγο
από μια καθορισμένη περίοδο. Η περίοδος δίνεται σε αριθμούς ακολουθούμενη από μία από αυτές τις μονάδες:
- s (δευτερόλεπτα)
- μ (λεπτά)
- ω (ώρες)
- δ (ημέρες)
- w (εβδομάδες)
- M (μήνες, σημείωση, κεφαλαίο "M")
- ε (έτη)
Για να σκοτώσετε μια διαδικασία που ονομάζεται
ανά
που μόλις κυκλοφόρησε και άφησε παλαιότερες περιπτώσεις
ανά
τρέχοντας, θα μπορούσατε να χρησιμοποιήσετε τις ακόλουθες παραμέτρους με
δολοφονία
, αν είχατε αντιδράσει εντός δύο λεπτών:
Μειώστε με ή εμένα
ο
-ο
Η επιλογή (παλαιότερη από) σάς επιτρέπει να σκοτώνετε διαδικασίες που εκτελούνται για περισσότερο από ένα καθορισμένο χρονικό διάστημα. Αυτή η εντολή θα σκοτώσει όλους
ssh
συνδέσεις που εκτελούνται για περισσότερο από μια ημέρα:
killall -o 1d sshd
Μην είστε πολύ χαρούμενοι
Αυτές οι εντολές θα σας επιτρέψουν να εντοπίσετε και να τερματίσετε σωστά τις διαδικασίες με ακρίβεια και ασφάλεια σωστά.
Πάντα να είστε προσεκτικοί. Πρώτον, βεβαιωθείτε ότι η διαδικασία που πρόκειται να σκοτώσετε είναι πραγματικά αυτή που θέλετε. Δεύτερον, κάντε διπλό έλεγχο - προσέξτε και βεβαιωθείτε ότι η στοχευμένη διαδικασία είναι αυτή που θέλετε να τερματίσετε. Συνεχίστε με τον τερματισμό της διαδικασίας μόλις είστε ικανοποιημένοι.