Πώς να χρησιμοποιήσετε την εντολή ps για την παρακολούθηση των διαδικασιών Linux

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

Διαχείριση διαδικασιών σε Linux

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

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

Αλλά ίσως δεν έχετε καθόλου προβλήματα εργασίας ή απόδοσης. Ίσως απλά να είστε περίεργοι για το ποιες διεργασίες εκτελούνται μέσα στον υπολογιστή σας και θα θέλατε να ρίξετε μια ματιά κάτω από την κουκούλα. Η εντολή ps ικανοποιεί και τις δύο αυτές ανάγκες. Σου δίνει ένα στιγμιότυπο του τι συμβαίνει μέσα στον υπολογιστή σας “τώρα αμέσως.”

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

Διαδικασίες καταχώρισης

Ο ευκολότερος τρόπος να χρησιμοποιήσετε το ps είναι να το ενεργοποιήσετε χωρίς παραμέτρους:

ps

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

Οι τέσσερις στήλες είναι:

PID: Ο αριθμός ID διεργασίας της διαδικασίας.
TTY: Το όνομα της κονσόλας στην οποία είναι συνδεδεμένος ο χρήστης.
TIME: Ο χρόνος επεξεργασίας της CPU που έχει χρησιμοποιήσει η διεργασία.
CMD: Το όνομα της εντολής που ξεκίνησε τη διαδικασία

Διαδικασία καταχώρισης για όλους τους χρήστες

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

ps -e | less

Η λίστα διεργασιών διοχετεύεται σε λιγότερα.

  Οι καλύτερες εναλλακτικές λύσεις για τις εφαρμογές Mac για Linux

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

Εμφάνιση Ιεραρχίας Διαδικασιών

Μερικές φορές μπορεί να σας βοηθήσει να καταλάβετε ένα ζήτημα ή να προσδιορίσετε μια συγκεκριμένη διαδικασία, εάν μπορείτε να δείτε ποιες διεργασίες ξεκίνησαν άλλες διεργασίες. Χρησιμοποιούμε την επιλογή -H (ιεραρχία) για να το κάνουμε.

ps -eH | less

Η εσοχή υποδεικνύει ποιες διεργασίες είναι γονείς ποιών άλλων διεργασιών.

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

ps -eH --forest | less

Αυτό διευκολύνει την παρακολούθηση ποιες διεργασίες είναι οι γονείς άλλων διεργασιών.

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

Μπορείτε να διοχετεύσετε την έξοδο από το ps έως το grep σε καταχωρήσεις λίστας που έχουν ονόματα που ταιριάζουν με τον όρο αναζήτησης. Εδώ αναζητούμε καταχωρήσεις που ταιριάζουν με τον όρο αναζήτησης “firefox”:

ps -e | grep firefox

Σε αυτήν την περίπτωση, η έξοδος είναι μια ενιαία καταχώρηση για τη διαδικασία που μας ενδιαφέρει. Φυσικά, εάν είχαμε ξεκινήσει πολλές παρουσίες του Firefox, θα επιστρέφονταν περισσότερα από ένα στοιχεία στη λίστα.

Εμφάνιση περισσότερων στηλών στην έξοδο

Για να προσθέσετε περισσότερες στήλες στην έξοδο, χρησιμοποιήστε την επιλογή -f (πλήρης μορφή).

ps -ef | less

Ένα επιπλέον σύνολο στηλών περιλαμβάνεται στην έξοδο από το ps.

Οι στήλες είναι:

UID: Το αναγνωριστικό χρήστη του κατόχου αυτής της διαδικασίας.
PID: Το αναγνωριστικό διεργασίας της διαδικασίας.
PPID: Γονικό αναγνωριστικό διαδικασίας της διαδικασίας.
Γ: Ο αριθμός των παιδιών που έχει η διαδικασία.
STIME: Ώρα έναρξης. Η ώρα που ξεκίνησε η διαδικασία.
TTY: Το όνομα της κονσόλας στην οποία είναι συνδεδεμένος ο χρήστης.
TIME: Ο χρόνος επεξεργασίας της CPU που έχει χρησιμοποιήσει η διεργασία.
CMD: Το όνομα της εντολής που ξεκίνησε τη διαδικασία.

Χρησιμοποιώντας την επιλογή -F (extra full-format) μπορούμε να λάβουμε ακόμη περισσότερες στήλες:

ps -eF | less

Οι στήλες που λαμβάνουμε αυτή τη φορά απαιτούν την πλάγια κύλιση της οθόνης για να τις αποκαλύψει όλες.

Πατώντας το πλήκτρο «Δεξί βέλος» μετατοπίζεται η οθόνη προς τα αριστερά.

Οι στήλες που έχουμε τώρα είναι:

UID: Το αναγνωριστικό χρήστη του κατόχου αυτής της διαδικασίας.
PID: Το αναγνωριστικό διεργασίας της διαδικασίας.
PPID: Γονικό αναγνωριστικό διαδικασίας της διαδικασίας.
Γ: Ο αριθμός των παιδιών που έχει η διαδικασία.
SZ: Μέγεθος σε σελίδες RAM της εικόνας διεργασίας.
RSS: Μέγεθος συνόλου κατοίκου. Αυτή είναι η μη εναλλασσόμενη φυσική μνήμη που χρησιμοποιείται από τη διαδικασία.
PSR: Ο επεξεργαστής στον οποίο έχει εκχωρηθεί η διεργασία.
STIME: Ώρα έναρξης. Η ώρα που ξεκίνησε η διαδικασία.
TTY: Το όνομα της κονσόλας στην οποία είναι συνδεδεμένος ο χρήστης.
TIME: Ο χρόνος επεξεργασίας της CPU που έχει χρησιμοποιήσει η διεργασία.
CMD: Το όνομα της εντολής που ξεκίνησε τη διαδικασία.

Διαδικασίες καταχώρισης ανά αναγνωριστικό διεργασίας

Αφού βρείτε το αναγνωριστικό διεργασίας για τη διαδικασία που σας ενδιαφέρει, μπορείτε να το χρησιμοποιήσετε με την εντολή ps για να παραθέσετε τις λεπτομέρειες αυτής της διαδικασίας. Χρησιμοποιήστε την επιλογή -p (επιλογή με αναγνωριστικό διεργασίας) για να το πετύχετε:

ps -p 3403

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

  Τι είναι το TTY στο Linux; (και Πώς να χρησιμοποιήσετε την εντολή tty)

Δεν περιορίζεστε σε ένα αναγνωριστικό διαδικασίας. Μπορείτε να παρέχετε μια λίστα με αναγνωριστικά διεργασίας, διαχωρισμένα με κενά.

Διαδικασίες καταχώρισης κατά εντολή

Η επιλογή -C (εντολή) σάς επιτρέπει να αναζητήσετε μια διεργασία χρησιμοποιώντας το όνομα της εντολής. Δηλαδή το όνομα της εντολής που ξεκίνησε τη διαδικασία. Αυτό είναι διακριτικά διαφορετικό από τη γραμμή εντολών, η οποία μπορεί να περιλαμβάνει ονόματα μονοπατιών και παραμέτρους ή επιλογές.

ps -C shutter

Παρατίθενται οι λεπτομέρειες για τη διαδικασία κλείστρου.

Διαδικασίες καταχώρισης που ανήκουν σε χρήστη

Για να δείτε τις διεργασίες που ανήκουν σε έναν συγκεκριμένο χρήστη, χρησιμοποιήστε την επιλογή -u (λίστα χρηστών):

ps -u mary

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

Διαδικασίες καταχώρισης ανά τερματικό

Για να δείτε τις διεργασίες που σχετίζονται με ένα TTY, χρησιμοποιήστε την επιλογή -t (επιλογή ανά TTY). Χρησιμοποιείται χωρίς αριθμό TTY, η επιλογή -t αναφέρει διεργασίες που σχετίζονται με το τρέχον παράθυρο τερματικού.

tty
ps -t

Η εντολή tty αναφέρει ότι πρόκειται για ψευδο-τηλετύπο 0. Οι διεργασίες που παρατίθενται από το ps -t σχετίζονται όλες με το TTY pts/0.

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

ps -t 1

Αυτή τη φορά όλες οι διεργασίες σχετίζονται με TTY pts/1.

Επιλογή στηλών για εμφάνιση

Με την επιλογή -o (format) μπορείτε να επιλέξετε ποιες στήλες θέλετε να συμπεριλάβετε στην έξοδο από το ps. Καθορίζετε τις στήλες με το όνομα. Η (μεγάλη) λίστα με τα ονόματα των στηλών μπορεί να δει κανείς στο σελίδα ανθρώπου στην ενότητα με τίτλο «Προδιαγραφείς τυπικής μορφής». Σε αυτό το παράδειγμα, επιλέγουμε να συμπεριληφθούν στην έξοδο ο χρόνος CPU (pcpu) και η γραμμή εντολών με ορίσματα (args).

ps -e -o pcpu,args | less

Η έξοδος περιλαμβάνει μόνο τις δύο στήλες που ζητήσαμε.

Ταξινόμηση της εξόδου κατά στήλες

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

ps -e -o pcpu,args --sort -pcpu| less

Η παύλα “-” στην παράμετρο ταξινόμησης pcpu δίνει μια φθίνουσα σειρά ταξινόμησης.

Για να δείτε τις δέκα διαδικασίες με τη μεγαλύτερη ένταση CPU, διοχετεύστε την έξοδο μέσω της κεφαλής εντολή:

ps -e -o pcpu,args --sort -pcpu | head -10

Λαμβάνουμε μια ταξινομημένη, περικομμένη λίστα.

Εάν προσθέσουμε περισσότερες στήλες στην οθόνη μας, μπορούμε να ταξινομήσουμε κατά περισσότερες στήλες. Ας προσθέσουμε τη στήλη pmem. Αυτό είναι το ποσοστό της μνήμης του υπολογιστή που χρησιμοποιείται από τη διαδικασία. Χωρίς παύλα ή με συν “+”, η σειρά ταξινόμησης είναι αύξουσα.

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

Παίρνουμε την επιπλέον στήλη μας και η νέα στήλη περιλαμβάνεται στην ταξινόμηση. Η πρώτη στήλη ταξινομείται πριν από τη δεύτερη στήλη και η δεύτερη στήλη ταξινομείται με αύξουσα σειρά επειδή δεν βάλαμε παύλα στο pmem.

  Πώς να εγγράψετε Screencast GIF σε Linux

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

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Τώρα μπορούμε να προσδιορίσουμε τις διαδικασίες.

Διαδικασίες θανάτωσης με αναγνωριστικό διαδικασίας

Έχουμε καλύψει μια σειρά τρόπων αναγνώρισης διαδικασιών, όπως όνομα, εντολή, χρήστη και τερματικό. Καλύψαμε επίσης τρόπους αναγνώρισης διεργασιών με βάση τα δυναμικά τους χαρακτηριστικά, όπως η χρήση της CPU και η μνήμη.

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

sudo kill 898

Εάν όλα πάνε καλά, η διαδικασία τερματίζεται σιωπηλά.

Διαδικασίες δολοφονίας με το όνομα

Η εντολή pkill σας επιτρέπει σκοτώστε τις διαδικασίες με το όνομα. Βεβαιωθείτε ότι έχετε εντοπίσει τη σωστή διαδικασία! Αυτή η εντολή θα τερματίσει την κορυφαία διαδικασία.

sudo pkill top

Και πάλι, τα νέα δεν είναι καλά νέα. Η διαδικασία τερματίζεται σιωπηλά.

Δολοφονία πολλαπλών διεργασιών με το όνομα

Εάν έχετε πολλά αντίγραφα μιας διεργασίας που εκτελούνται ή μια διεργασία έχει δημιουργήσει έναν αριθμό θυγατρικών διεργασιών (όπως μπορεί να κάνει το Google Chrome), πώς μπορείτε να τις καταργήσετε; Είναι εξίσου εύκολο. Χρησιμοποιούμε την εντολή killall.

Έχουμε δύο αντίγραφα κορυφαίων:

ps -e | grep top

Μπορούμε να τερματίσουμε και οι δύο με αυτήν την εντολή:

sudo killall top

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

Αποκτήστε μια δυναμική προβολή με κορυφή

Η έξοδος από το ps είναι μια προβολή στιγμιότυπου. Δεν ενημερώνεται. Για να λάβετε μια ενημερωμένη προβολή των διαδικασιών, χρησιμοποιήστε την εντολή top. Παρέχει α δυναμική προβολή των διαδικασιών που εκτελούνται στον υπολογιστή σας. Η οθόνη είναι σε δύο μέρη. Υπάρχει μια περιοχή του πίνακα οργάνων στο επάνω μέρος της οθόνης που αποτελείται από γραμμές κειμένου και ένας πίνακας στο κάτω μέρος της οθόνης που αποτελείται από στήλες.

Ξεκινήστε από την κορυφή με αυτήν την εντολή:

top

Οι στήλες περιέχουν πληροφορίες για τις διαδικασίες:

PID: Αναγνωριστικό διαδικασίας
ΧΡΗΣΤΗΣ: Όνομα του κατόχου της διαδικασίας
PR: Προτεραιότητα διαδικασίας
Ν.Ι.: Η ωραία αξία της διαδικασίας
VIRT: Εικονική μνήμη που χρησιμοποιείται από τη διαδικασία
RES: Μόνιμη μνήμη που χρησιμοποιείται από τη διαδικασία
SHR: Κοινόχρηστη μνήμη που χρησιμοποιείται από τη διαδικασία
Σ: Κατάσταση της διαδικασίας. Δείτε την παρακάτω λίστα με τις τιμές που μπορεί να λάβει αυτό το πεδίο
%CPU: το μερίδιο του χρόνου CPU που χρησιμοποιείται από τη διαδικασία από την τελευταία ενημέρωση
%MEM: μερίδιο φυσικής μνήμης που χρησιμοποιείται
TIME+: συνολικός χρόνος CPU που χρησιμοποιείται από την εργασία σε εκατοστά του δευτερολέπτου
ΕΝΤΟΛΗ: όνομα εντολής ή γραμμή εντολών (όνομα και παράμετροι γραμμής εντολών) Εάν δεν είναι ορατή η στήλη εντολών, πατήστε το πλήκτρο «Δεξί βέλος».

Η κατάσταση της διαδικασίας μπορεί να είναι μία από τις:

Δ: Αδιάκοπος ύπνος
Ε: Τρέξιμο
Σ: Κοιμάται
T: Traced (σταμάτησε)
Ζ: Ζόμπι

Πατήστε το πλήκτρο “Q” για έξοδο από την κορυφή.

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

Βεβαιωθείτε ότι είναι αυτό που αναζητάτε και βεβαιωθείτε ότι δεν πρόκειται να σας δημιουργήσει κανένα πρόβλημα. Συγκεκριμένα, αξίζει να ελέγξετε με τις επιλογές -H (ιεραρχία) και –δάσος για να βεβαιωθείτε ότι δεν υπάρχουν σημαντικές θυγατρικές διεργασίες που είχατε ξεχάσει.