Εισαγωγή
Όταν οι περισσότεροι από εμάς χρησιμοποιούμε υπολογιστές, εκτελούμε διάφορες εφαρμογές. Αυτές οι εφαρμογές εκτελούνται από προγράμματα που ονομάζονται διακομιστές ή λειτουργικά συστήματα. Υπάρχουν πολλά διαφορετικά είδη διακομιστών που λειτουργούν με διαφορετικούς τρόπους. Ένας από αυτούς είναι το Linux. Το Linux εκτελεί εφαρμογές με τη μορφή διεργασιών.
Στο Linux, αναφερόμαστε σε κάθε εφαρμογή ως «διεργασία». Ο διακομιστής είναι ικανός να διαχειρίζεται τη χαμηλού επιπέδου πτυχή του κύκλου ζωής της διεργασίας. Ως χρήστης, ίσως χρειαστεί να αλληλεπιδράσετε με τον διακομιστή για να χειριστείτε ορισμένες πτυχές υψηλότερου επιπέδου. Μπορείτε να επικοινωνείτε με το λειτουργικό σύστημα και να το διαχειρίζεστε χρησιμοποιώντας διάφορα εργαλεία. Υπάρχουν πολλές εντολές που μπορείτε να χρησιμοποιήσετε για να τροποποιήσετε διάφορες πτυχές και λειτουργίες του διακομιστή. Εδώ είναι ένας εύκολος στην παρακολούθηση οδηγός για το πώς να εγκαταστήσετε εύκολα τον βασισμένο στο Linux διακομιστή σας στο Ubuntu. Μπορείτε επίσης να μάθετε πώς να εγκαταστήσετε το LAMP Stack (Linux, Apache, MySQL, PHP).
Αυτός ο οδηγός εστιάζει στο πώς μπορείτε να χρησιμοποιήσετε τις ps, kill και nice για τη διαχείριση διεργασιών στο Linux.
Προβολή εκτελούμενων διεργασιών στο Linux
- top
Για αρχή, μία από τις πιο βασικές εντολές που πρέπει να γνωρίζετε είναι η top. Αυτό το εργαλείο σάς βοηθά να οπτικοποιήσετε ποιες διεργασίες εκτελούνται αυτήν τη στιγμή στο σύστημα. Δείτε πώς θα εμφανιστεί όταν την εκτελέσετε:
|
1 |
top |

Στο επάνω μέρος του αποτελέσματος, μπορείτε να εντοπίσετε τα στατιστικά στοιχεία του συστήματος. Αυτό σας δίνει πληροφορίες για πράγματα όπως το φορτίο του συστήματος και τον αριθμό των εργασιών. Σε αυτό το παράδειγμα, μπορείτε να διαπιστώσετε ότι υπάρχει μία εκτελούμενη διεργασία και 55 αδρανείς διεργασίες. Οι αδρανείς ή σε αναστολή διεργασίες είναι αυτές που δεν χρησιμοποιείτε αυτήν τη στιγμή. Αυτό σημαίνει ότι δεν καταλαμβάνουν τους πόρους του συστήματος. Τέλος, μπορείτε να δείτε όλες τις εκτελούμενες διεργασίες κοντά στο κάτω μέρος του αναδυόμενου παραθύρου με τα στατιστικά στοιχεία χρήσης.
- htop
Πριν χρησιμοποιήσετε αυτήν την εντολή, θα πρέπει να την εγκαταστήσετε από τα αποθετήρια πληκτρολογώντας και εκτελώντας τα εξής:
|
1 |
sudo apt-get install htop |
Μόλις το αποκτήσετε, μπορείτε να το χρησιμοποιήσετε για να εμφανίσετε παρόμοιες πληροφορίες με αυτές που εμφανίσατε με το top. Η κύρια διαφορά είναι ότι με την εντολή htop, έχετε ένα πιο φιλικό προς τον χρήστη αποτέλεσμα:
|
1 |
htop |

Όπως μπορείτε να δείτε, αυτό το αποτέλεσμα είναι εύκολο να το παρακολουθήσετε και να το ερμηνεύσετε.
Χρήση της ps για την προβολή λίστας διεργασιών
Αν και μπορείτε να χρησιμοποιήσετε τις προαναφερθείσες εντολές για να δείτε τις εκτελούμενες διεργασίες, ενδέχεται να μην καλύπτουν πάντα όλα τα σενάρια. Ευτυχώς, έχουμε στη διάθεσή μας ένα ισχυρότερο και πιο ευέλικτο εργαλείο. Αυτή είναι η εντολή ps.
Ας εξερευνήσουμε τι θα δείτε αν εκτελέσετε την εντολή ως έχει:
|
1 |
ps |

Σε αυτό το αποτέλεσμα, μπορείτε να δείτε όλες τις διεργασίες που εκτελούνται σε σχέση με τον τρέχοντα χρήστη και τη συνεδρία. Ωστόσο, αυτό δεν σας δίνει πολλές πληροφορίες.
Εάν θέλετε μια πιο ολιστική εικόνα όλων των διεργασιών που εκτελούνται στο σύστημα, πρέπει να χρησιμοποιήσετε ένα όρισμα. Ένα όρισμα σάς επιτρέπει να βλέπετε όλες τις διεργασίες που ανήκουν σε όλους τους χρήστες, ανεξάρτητα από τη σύνδεση με το τερματικό. Το αποτέλεσμα εμφανίζεται επίσης σε μια πολύ φιλική προς τον χρήστη και ευανάγνωστη μορφή. Εδώ είναι ένα παράδειγμα:
|
1 |
ps aux |

Από την άλλη πλευρά, μπορείτε επίσης να οπτικοποιήσετε αυτές τις πληροφορίες σε μορφή δέντρου. Εδώ, όπως θα δείτε, γίνονται εμφανείς και οι ιεραρχικές σχέσεις:
|
1 |
ps axjf |

Σε αυτό το παράδειγμα, μπορείτε να δείτε πώς το kthreadd εμφανίζεται ως ο γονέας των διεργασιών που ακολουθούν στη συνέχεια.
- Τι είναι τα αναγνωριστικά διεργασιών (Process IDs);
Ως χρήστης Linux ή Unix , θα πρέπει να γνωρίζετε για τα αναγνωριστικά διεργασιών. Γνωστά και ως PIDs, πρόκειται για μοναδικές ταυτότητες που εκχωρούνται σε κάθε διεργασία από το σύστημα. Αυτές οι ταυτότητες είναι ο τρόπος με τον οποίο ο διακομιστής παρακολουθεί κάθε μεμονωμένη διεργασία. Για να μάθετε το PID μιας δεδομένης διεργασίας, πρέπει να χρησιμοποιήσετε την εντολή pgrep, ως εξής:
|
1 |
pgrep bash |
|
1 2 |
Έξοδος: 1340 |
Όταν εκκινείτε το σύστημά σας, ξεκινά να εκτελείται η πρώτη διεργασία. Αυτή η διεργασία ονομάζεται init. Ως προεπιλεγμένος μηχανισμός, η διεργασία init λαμβάνει το PID «1». Μπορείτε να ελέγξετε το PID αυτής της διεργασίας ως εξής:
|
1 |
pgrep init |
|
1 2 |
Έξοδος: 1 |
Η διεργασία init έχει στη συνέχεια την ευθύνη να εκκινήσει όλα τα άλλα προγράμματα ή διεργασίες. Όπως είναι φυσικό, οι επόμενες διεργασίες θα έχουν αυξανόμενα ή μεγαλύτερα PIDs.
- Τι είναι οι γονικές διεργασίες;
Μια άλλη έννοια που πρέπει να γνωρίζετε είναι η γονική διεργασία. Εάν η διεργασία Α δημιουργήσει τη διεργασία Β, τότε η διεργασία Α είναι η γονική διεργασία της διεργασίας Β. Για να βοηθήσει στη διάκρισή τους, το σύστημα εκχωρεί στις γονικές διεργασίες ένα PPID. Μπορείτε να παρατηρήσετε αυτό το PPID στις κεφαλίδες των στηλών κάθε φορά που εκτελείτε οποιαδήποτε εντολή διαχείρισης, όπως top, htop και ps.
- Τι είναι οι σχέσεις Γονέα-Παιδιού;
Όπως ήδη γνωρίζουμε, οι γονικές διεργασίες δημιουργούν θυγατρικές διεργασίες. Αυτή η δημιουργία γίνεται σε δύο βήματα. Το πρώτο είναι το fork(). Αυτό ξεκινά με τη δημιουργία ενός νέου χώρου διευθύνσεων. Αντιγράφει επίσης τους πόρους του γονέα χρησιμοποιώντας copy-on-write, ώστε να είναι διαθέσιμοι και στη θυγατρική διεργασία. Το δεύτερο είναι το exec(). Αυτό είναι υπεύθυνο για τη φόρτωση και την εκτέλεση ενός εκτελέσιμου αρχείου στον πρόσφατα δημιουργημένο χώρο διευθύνσεων.
- Τι συμβαίνει εάν η θυγατρική διεργασία τερματιστεί πριν από τη γονική διεργασία;
Σε περίπτωση που συμβεί αυτό, η θυγατρική διεργασία γίνεται zombie. Αυτό ισχύει μέχρι η γονική διεργασία να συλλέξει κάποιες πληροφορίες σχετικά με αυτήν ή να πει στον πυρήνα ότι δεν χρειάζεται τις σχετικές πληροφορίες. Μόλις συμβεί αυτό, οι πόροι που χρησιμοποιούσε η διεργασία θα είναι πλέον ελεύθεροι.
- Τι συμβαίνει εάν η γονική διεργασία τερματιστεί πριν από τη θυγατρική διεργασία;
Σε αυτό το σενάριο, το σύστημα θα αναθέσει ξανά τη θυγατρική διεργασία σε μια άλλη γονική διεργασία. Αυτή μπορεί να είναι η init ή οποιαδήποτε άλλη διεργασία.
Αποστολή σημάτων σε διεργασίες στο Linux
Μπορείτε να κάνετε μια συγκεκριμένη διεργασία να ανταποκριθεί στέλνοντάς της ένα σήμα. Τα σήματα σάς βοηθούν να επικοινωνείτε με το λειτουργικό σύστημα. Μπορείτε να χρησιμοποιήσετε το σήμα για να κάνετε μια εφαρμογή να τερματιστεί, να ξεκινήσει ή να τροποποιήσει μια δεδομένη συμπεριφορά ή εργασία.
- Χρήση του PID για την αποστολή σημάτων
Ένα από τα εργαλεία που μπορείτε να χρησιμοποιήσετε για να στείλετε σήματα στο Linux είναι το kill. Αυτή η εντολή, όπως υποδηλώνει και το όνομά της, σας βοηθά να τερματίσετε ή να «σκοτώσετε» μια διεργασία:
|
1 |
kill PIDoftarget_process |
Αυτό το εργαλείο στέλνει το σήμα TERM στη διεργασία, το οποίο της λέει να τερματιστεί. Η εντολή κάνει την εφαρμογή να εκτελέσει εκκαθάριση και να εξέλθει με ευκολία. Σε περίπτωση που το πρόγραμμα δεν εξέλθει ομαλά με το σήμα TERM, μπορείτε να προχωρήσετε απευθείας παρακάμπτοντας το σήμα KILL:
|
1 |
kill -KILL PIDoftarget_process |
Αυτό το σήμα δεν πηγαίνει στο πρόγραμμα. Πηγαίνει στον πυρήνα του λειτουργικού συστήματος. Ο πυρήνας θα τερματίσει απευθείας τη διεργασία. Μπορείτε να το χρησιμοποιήσετε αυτό όταν ένα πρόγραμμα αγνοεί τα σήματα που του στέλνετε.
Σε αυτήν την εντολή, μπορείτε επίσης να αντικαταστήσετε το όνομα του σήματος με τον αριθμό που σχετίζεται με αυτό. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το ‘-15’ στη θέση του ‘-TERM’. Ομοίως, μπορείτε να αντικαταστήσετε το ‘-KILL’ με το ‘-9’.
- Χρήση σημάτων για διάφορους σκοπούς
Μπορείτε να χρησιμοποιήσετε σήματα για να κάνετε άλλα πράγματα εκτός από τον τερματισμό προγραμμάτων. Για παράδειγμα, ένα ζήτημα που μπορεί να αντιμετωπίσετε είναι η επανεκκίνηση των daemons. Κάθε φορά που ένας daemon λαμβάνει ένα σήμα hang up ή HUP, θα κάνει επανεκκίνηση σε προγράμματα όπως το Apache. Για να το παρακάμψετε αυτό, μπορείτε να χρησιμοποιήσετε το ακόλουθο σήμα:
|
1 |
sudo kill -HUP pidofapache |
Αυτή η εντολή θα κάνει τον Apache να επαναφορτώσει τις ρυθμίσεις του. Ως αποτέλεσμα, θα συνεχίσει να σας παρέχει το σχετικό περιεχοވެνο.
Εάν θέλετε να δείτε ποια σήματα μπορείτε να στείλετε με το εργαλείο kill, χρησιμοποιήστε την ακόλουθη εντολή:
|
1 |
kill -l |

- Αποστολή σημάτων με βάση το όνομα
Παραδοσιακά, θα στέλνατε ένα σήμα χρησιμοποιώντας το PID του προγράμματος. Ωστόσο, έχετε την επιλογή να στείλετε σήματα χρησιμοποιώντας το κανονικό όνομα της διεργασίας. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε την εντολή pkill. Λειτουργεί με παρόμοιο τρόπο με τον τρόπο που λειτουργεί η εντολή pkill. Η μόνη διαφορά είναι ότι σας επιτρέπει να χρησιμοποιήσετε το όνομα της διεργασίας:
|
1 |
pkill -9 ping |
Αυτή η εντολή pkill είναι το αντίστοιχο της ακόλουθης εντολής kill:
|
1 |
kill -9 `pgrep ping` |
Έχετε επίσης μια εντολή για όταν θέλετε να στείλετε ένα σήμα σε κάθε στιγμιότυπο αντί για μια συγκεκριμένη διεργασία. Η ακόλουθη εντολή θα στείλει ένα σήμα TERM σε όλα τα στιγμιότυπα του Firefox που εκτελούνται στο σύστημα:
|
1 |
killall firefox |
Προσαρμογή προτεραιοτήτων διεργασιών
Ένα άλλο πράγμα που μπορείτε να κάνετε με τις εντολές Linux είναι να προσαρμόσετε τις προτεραιότητες. Αυτό σημαίνει ότι μπορείτε να αποφασίσετε ποια διεργασία έχει προτεραιότητα στο περιβάλλον του διακομιστή σας. Ενδέχεται να υπάρχουν ορισμένες διεργασίες που θεωρείτε κρίσιμες. Άλλες μπορεί να μην είναι τόσο απαραίτητες. Το σύστημα θα εκτελέσει τα τελευταία προγράμματα μόνο όταν περισσεύουν κάποιοι πόροι.
Μπορείτε να ελέγξετε την προτεραιότητα των διεργασιών στο Linux μέσω της εντολής niceness. Αυτή η τιμή υποδεικνύει τις εργασίες υψηλής προτεραιότητας ως λιγότερο «ευγενικές» (less nice) και τις διεργασίες χαμηλής προτεραιότητας ως περισσότερο «ευγενικές» (more nice). Σκεφτείτε το ως εξής: οι διεργασίες υψηλής προτεραιότητας είναι λιγότερο ευγενικές επειδή μονοπωλούν τους πόρους. Οι εργασίες χαμηλής προτεραιότητας τους μοιράζονται, επομένως είναι πιο ευγενικές.
Μπορείτε να δείτε την τιμή nice μιας δεδομένης διεργασίας όταν εκτελείτε την εντολή top. Αυτή η τιμή βρίσκεται στη στήλη «NI». Οι εργασίες υψηλής προτεραιότητας θα έχουν τιμές nice που κυμαίνονται μεταξύ «-19/-20». Οι διεργασίες χαμηλής προτεραιότητας κυμαίνονται μεταξύ «19/20». Θα δείτε κάτι σαν αυτό:
|
1 |
top |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Εργασίες: 56 συνολικά, 1 σε εκτέλεση, 55 σε αναμονή, 0 σταματημένες, 0 ζόμπι Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k συνολικά, 324496k χρησιμοποιούμενα, 695104k ελεύθερα, 8512k buffers Swap: 0k συνολικά, 0k χρησιμοποιούμενα, 0k ελεύθερα, 264812k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1635 root 20 0 17300 1200 920 R 0.3 0.1 0:00.01 top 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0 |
Αν θέλετε να εκτελέσετε μια διεργασία με μια προσωπικά καθορισμένη τιμή nice, πρέπει απλώς να χρησιμοποιήσετε την εντολή nice:
|
1 |
nice -n 15 commandtoexecute |
Αυτή η εντολή θα λειτουργήσει μόνο όταν ξεκινάτε το δεδομένο πρόγραμμα. Αν θέλετε να αλλάξετε την τιμή nice ενός προγράμματος που εκτελείται ήδη, πρέπει να χρησιμοποιήσετε την εντολή renice:
|
1 |
renice 0 PIDtoprioritize |
Συμπέρασμα
Όπως μπορείτε να δείτε, τα εργαλεία εδώ είναι αρκετά διαφορετικά από τα γραφικά. Ως αποτέλεσμα, μπορεί να είναι δύσκολο να κατανοηθούν από έναν αρχάριο. Αυτός ο οδηγός θα σας βοηθήσει να εξοικειωθείτε με τις εντολές. Η περισσότερη εξάσκηση θα σας βοηθήσει να μάθετε καλύτερα και να τις χρησιμοποιείτε πιο αποτελεσματικά.
Δείτε τους άλλους πόρους μας που μπορούν να σας βοηθήσουν να διαχειριστείτε καλύτερα τους διακομιστές Linux σας, συμπεριλαμβανομένων οδηγών για πώς να ρυθμίσετε τον διακομιστή Linux σας ώστε να χρησιμοποιεί έλεγχο ταυτότητας βάσει κλειδιού SSH, τον εντοπισμό αρχείων στο σύστημα Linux VPS σας με τις εντολές whereis, which, whatis, readlink και find, και την ανάγνωση και τον ορισμό μεταβλητών περιβάλλοντος και κελύφους σε ένα Linux VPS.
Καλή υπολογιστική!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.