Εντολή εκκίνησης φόντου Linux. Πώς να εκτελέσετε ένα πρόγραμμα στο Linux. Διαγραφή εκκρεμών εργασιών

Καθήκοντα και διαδικασίες

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

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

Σημειώστε ότι από προεπιλογή η εντολή ΥΣΤΕΡΟΓΡΑΦΟεμφανίζει μια λίστα μόνο με εκείνες τις διεργασίες που ανήκουν στον χρήστη που την εκκίνησε. Για να δείτε όλες τις διεργασίες που εκτελούνται στο σύστημα, πρέπει να εκδώσετε την εντολή ps -a . Αριθμοί διαδικασίας(αναγνωριστικό διεργασίας ή PID), που αναφέρονται στην πρώτη στήλη, είναι μοναδικοί αριθμοί που το σύστημα εκχωρεί σε κάθε εκτελούμενη διεργασία. Η τελευταία στήλη, με τίτλο COMMAND, υποδεικνύει το όνομα της εντολής που εκτελείται. Σε αυτήν την περίπτωση, η λίστα περιέχει διαδικασίες που έχουν ξεκινήσει από τον ίδιο τον χρήστη Larry. Υπάρχουν πολλές άλλες διεργασίες που εκτελούνται στο σύστημα, αυτές πλήρης λίσταμπορεί να προβληθεί με την εντολή ps-aux. Ωστόσο, μεταξύ των εντολών που εκτελούνται από τον χρήστη larry, υπάρχει μόνο το bash (το κέλυφος εντολών για τον χρήστη larry) και η ίδια η εντολή ΥΣΤΕΡΟΓΡΑΦΟ. Το κέλυφος bash φαίνεται να εκτελείται ταυτόχρονα με την εντολή ΥΣΤΕΡΟΓΡΑΦΟ. Όταν ο χρήστης εισήγαγε την εντολή ΥΣΤΕΡΟΓΡΑΦΟ, το κέλυφος bash άρχισε να το εκτελεί. Μετά την ομάδα ΥΣΤΕΡΟΓΡΑΦΟέχει ολοκληρώσει την εργασία του (εμφανίζεται ο πίνακας διεργασιών), ο έλεγχος επιστρέφει στη διαδικασία bash. Στη συνέχεια, το κέλυφος bash εμφανίζει μια προτροπή και περιμένει μια νέα εντολή.

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

Στις περισσότερες περιπτώσεις, οι χρήστες θα εκτελέσουν μόνο μία εργασία - αυτή θα είναι η τελευταία εντολή που εισήγαγαν στο κέλυφος εντολών. Ωστόσο, πολλά κελύφη (συμπεριλαμβανομένων των bash και tcsh) έχουν λειτουργίες διαχείριση εργασιών(έλεγχος εργασιών), επιτρέποντάς σας να εκτελέσετε πολλές εντολές ταυτόχρονα ή καθήκοντα(θέσεις εργασίας) και, όπως απαιτείται, εναλλάσσονται μεταξύ τους.

Η διαχείριση εργασιών μπορεί να είναι χρήσιμη εάν, για παράδειγμα, επεξεργάζεστε ένα μεγάλο αρχείο κειμένουκαι θέλετε να διακόψετε προσωρινά την επεξεργασία για να κάνετε κάποια άλλη λειτουργία. Μπορείτε να χρησιμοποιήσετε τις δυνατότητες διαχείρισης εργασιών για να εγκαταλείψετε προσωρινά το πρόγραμμα επεξεργασίας, να επιστρέψετε στο μήνυμα του κελύφους και να εκτελέσετε άλλες ενέργειες. Όταν ολοκληρωθούν, μπορείτε να επιστρέψετε στην εργασία με τον επεξεργαστή και να τον βρείτε στην ίδια κατάσταση στην οποία είχε μείνει. Υπάρχουν πολλές πιο χρήσιμες χρήσεις για τις λειτουργίες διαχείρισης εργασιών.

Λειτουργία προσκηνίου και παρασκηνίου

Οι εργασίες μπορούν να είναι είτε σε πρώτο πλάνο(πρώτο πλάνο), ή Ιστορικό(Ιστορικό). Μπορεί να υπάρχει μόνο μία εργασία στο προσκήνιο ανά πάσα στιγμή. Η εργασία στο προσκήνιο είναι η εργασία με την οποία αλληλεπιδράτε. λαμβάνει είσοδο από το πληκτρολόγιο και στέλνει έξοδο στην οθόνη (εκτός, φυσικά, αν ανακατευθύνατε την είσοδο ή την έξοδο κάπου αλλού). Κατά, εργασίες στο παρασκήνιοδεν λαμβάνετε είσοδο από το τερματικό. Συνήθως, τέτοιες εργασίες δεν απαιτούν αλληλεπίδραση με τον χρήστη.

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

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

Δύο σήματα - αριθμός 9 ( ΣΚΟΤΩΝΩ) και 19 ( ΝΑ ΣΤΑΜΑΤΗΣΕΙ) - επεξεργάζεται πάντα από το σύστημα. Το πρώτο από αυτά χρειάζεται για να σκοτώσει τη διαδικασία σίγουρα (εξ ου και το όνομα). Σήμα ΝΑ ΣΤΑΜΑΤΗΣΕΙ αναστέλλει διεργασία: σε αυτήν την κατάσταση, η διεργασία δεν αφαιρείται από τον πίνακα διεργασιών, αλλά δεν εκτελείται έως ότου λάβει το σήμα 18 ( ΣΥΝΕΧΕΙΑ) - μετά την οποία θα συνεχίσει να λειτουργεί. Στο κέλυφος εντολών Linux, το σήμα ΝΑ ΣΤΑΜΑΤΗΣΕΙμπορεί να περάσει στην ενεργή διαδικασία χρησιμοποιώντας μια ακολουθία διαφυγής Ctrl -Ζ .

Αριθμός σήματος 15 ( ΟΡΟΣ) χρησιμεύει για τη διακοπή της εργασίας. Στο ΔΙΑΚΟΠΗ(διακοπή) η διαδικασία εργασίας πεθαίνει. Οι εργασίες συνήθως διακόπτονται από μια ακολουθία διαφυγής Ctrl -ντο. Δεν υπάρχει τρόπος να επαναφέρετε μια εργασία που έχει διακοπεί. Θα πρέπει επίσης να γνωρίζετε ότι ορισμένα προγράμματα παρεμποδίζουν το σήμα ΟΡΟΣ(χρησιμοποιώντας έναν χειριστή), ώστε να πατήσετε ένα συνδυασμό πλήκτρων Ctrl -ντο(ιε) δεν μπορεί να ματαιώσει αμέσως τη διαδικασία. Αυτό γίνεται έτσι ώστε το πρόγραμμα να μπορεί να καταστρέψει ίχνη της δουλειάς του πριν ολοκληρωθεί. Στην πράξη, ορισμένα προγράμματα δεν μπορούν να διακοπούν καθόλου με αυτόν τον τρόπο.

Μεταφορά στο παρασκήνιο και καταστροφή εργασιών

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

/home/larry# ναι y y y y y

Η ακολουθία τέτοιων γραμμών θα συνεχιστεί επ' αόριστον. Μπορείτε να καταστρέψετε αυτή τη διαδικασία στέλνοντάς της ένα σήμα διακοπής, δηλαδή πατώντας Ctrl -ντο. Ας κάνουμε τα πράγματα διαφορετικά τώρα. Για να αποτρέψουμε την εμφάνιση αυτής της ατελείωτης ακολουθίας στην οθόνη, θα ανακατευθύνουμε την τυπική έξοδο της εντολής yes στο /dev/null . Όπως ίσως γνωρίζετε, η συσκευή /dev/null λειτουργεί ως "μαύρη τρύπα": όλα τα δεδομένα που αποστέλλονται σε αυτήν τη συσκευή χάνονται. Χρησιμοποιώντας αυτήν τη συσκευή είναι πολύ βολικό να απαλλαγείτε από υπερβολική έξοδο από ορισμένα προγράμματα.

/home/larry# ναι > /dev/null

Τώρα δεν εμφανίζεται τίποτα στην οθόνη. Ωστόσο, η προτροπή του κελύφους επίσης δεν επιστρέφεται. Αυτό συμβαίνει επειδή η εντολή yes εξακολουθεί να εκτελείται και στέλνει τα μηνύματά της που αποτελούνται από τα γράμματα y στο /dev/null. Μπορείτε επίσης να καταστρέψετε αυτήν την εργασία στέλνοντάς της ένα σήμα διακοπής.

Τώρα ας υποθέσουμε ότι θέλετε η εντολή yes να συνεχίσει να λειτουργεί, αλλά και να επιστρέψει το prompt του κελύφους στην οθόνη, ώστε να μπορείτε να εργαστείτε με άλλα προγράμματα. Για να το κάνετε αυτό, μπορείτε να βάλετε την εντολή ναι στο παρασκήνιο και θα λειτουργήσει εκεί χωρίς να επικοινωνήσει μαζί σας.

Ένας τρόπος για να βάλετε μια διαδικασία στο παρασκήνιο είναι να προσθέσετε ένα & στο τέλος της εντολής. Παράδειγμα:

/home/larry# ναι > /dev/null & + 164 /home/larry#

Το μήνυμα είναι ΑΡΙΘΜΟΣ δουλειας(αριθμός εργασίας) για τη διαδικασία ναι. Το κέλυφος εντολών εκχωρεί έναν αριθμό εργασίας σε κάθε εργασία που εκτελείται. Εφόσον το ναι είναι η μόνη εκτελέσιμη εργασία, της εκχωρείται ο αριθμός 1. Ο αριθμός 164 είναι ο αριθμός αναγνώρισης που σχετίζεται με αυτήν τη διαδικασία (PID) και αυτός ο αριθμός δίνεται επίσης στη διεργασία από το σύστημα. Όπως θα δούμε αργότερα, μια διαδικασία μπορεί να προσπελαστεί καθορίζοντας και τους δύο αυτούς αριθμούς.

Τώρα λοιπόν έχουμε μια διαδικασία ναι που εκτελείται στο παρασκήνιο, στέλνοντας συνεχώς μια ροή y στη συσκευή /dev/null. Για να μάθετε την κατάσταση αυτής της διαδικασίας, πρέπει να εκτελέσετε την εντολή θέσεις εργασίας, που είναι μια εσωτερική εντολή φλοιού.

/home/larry# εργασίες + Εκτέλεση ναι >/dev/null & /home/larry#

Βλέπουμε ότι αυτό το πρόγραμμα λειτουργεί πραγματικά. Για να μάθετε την κατάσταση μιας εργασίας, μπορείτε επίσης να χρησιμοποιήσετε την εντολή ΥΣΤΕΡΟΓΡΑΦΟ, όπως φαίνεται παραπάνω.

Για να μεταδοθεί ένα σήμα στη διαδικασία (τις περισσότερες φορές υπάρχει ανάγκη διακοπήεργασία εργασίας) χρησιμοποιείται το βοηθητικό πρόγραμμα σκοτώνω. Αυτή η εντολή δίνεται είτε ένας αριθμός εργασίας είτε ένα PID ως όρισμα. Μια προαιρετική παράμετρος είναι ο αριθμός του σήματος που πρέπει να σταλεί στη διεργασία. Από προεπιλογή το σήμα αποστέλλεται ΟΡΟΣ. Στην παραπάνω περίπτωση, ο αριθμός εργασίας ήταν 1, άρα η εντολή σκοτώστε %1θα διακόψει την εργασία. Όταν η πρόσβαση σε μια εργασία γίνεται με τον αριθμό της (και όχι με το PID), τότε αυτός ο αριθμός πρέπει να προηγείται από ένα σύμβολο ποσοστού (“%) στη γραμμή εντολών.

Τώρα ας εισάγουμε την εντολή θέσεις εργασίαςξανά για να ελέγξετε το αποτέλεσμα της προηγούμενης ενέργειας:

/home/larry# εργασίες Τερματίστηκε ναι >/dev/null

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

Μπορείτε επίσης να σκοτώσετε μια εργασία χρησιμοποιώντας τον αριθμό αναγνώρισης διεργασίας (PID). Αυτός ο αριθμός, μαζί με τον αναγνωριστικό αριθμό εργασίας, υποδεικνύεται όταν ξεκινά η εργασία. Στο παράδειγμά μας, η τιμή PID ήταν 164, άρα η εντολή σκοτώστε 164θα ισοδυναμούσε με την εντολή σκοτώστε %1. Όταν χρησιμοποιείτε το PID ως όρισμα στην εντολή kill, δεν χρειάζεται να εισαγάγετε τον χαρακτήρα "%".

Παύση και συνέχιση εργασιών

Ας ξεκινήσουμε πρώτα τη διαδικασία με την εντολή ναι στο προσκήνιο, όπως έγινε πριν:

/home/larry# ναι > /dev/null

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

Τώρα, αντί να διακόψετε την εργασία με έναν συνδυασμό πλήκτρων Ctrl -ντο, η εργασία είναι δυνατή αναστέλλω(αναστολή, κυριολεκτικά - να αναστείλει), στέλνοντάς του ένα σήμα ΝΑ ΣΤΑΜΑΤΗΣΕΙ. Για να θέσετε σε παύση μια εργασία, πρέπει να πατήσετε τον κατάλληλο συνδυασμό πλήκτρων, συνήθως αυτό Ctrl -Ζ .

/home/larry# ναι > /dev/null Ctrl -Ζ+ Σταμάτησε ναι >/dev/null /home/larry#

Η διαδικασία που έχει ανασταλεί απλά δεν εκτελείται. Δεν καταναλώνει πόρους επεξεργαστή. Μια εργασία σε αναστολή μπορεί να ξεκινήσει να εκτελείται από το ίδιο σημείο σαν να μην είχε ανασταλεί.

Για να συνεχίσετε την εκτέλεση της εργασίας στο προσκήνιο, μπορείτε να χρησιμοποιήσετε την εντολή fg(από τη λέξη προσκήνιο - προσκήνιο).

/home/larry# fg ναι >/dev/null

Το κέλυφος εντολών θα εμφανίσει ξανά το όνομα της εντολής, έτσι ώστε ο χρήστης να γνωρίζει σε ποια εργασία βρίσκεται. αυτή τη στιγμήεκτοξεύτηκε σε πρώτο πλάνο. Ας διακόψουμε ξανά αυτήν την εργασία πατώντας τα πλήκτρα Ctrl -Ζ, αλλά αυτή τη φορά ας το εκκινήσουμε στο παρασκήνιο με την εντολή bg(από τη λέξη φόντο - φόντο). Αυτό θα κάνει τη διαδικασία να εκτελεστεί σαν να είχε εκτελεστεί χρησιμοποιώντας μια εντολή με το & στο τέλος (όπως έγινε στην προηγούμενη ενότητα):

/home/larry# bg + ναι $>$/dev/null & /home/larry#

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

Δεν μπορείτε να χρησιμοποιήσετε τη συντόμευση πληκτρολογίου για να θέσετε σε παύση μια εργασία που εκτελείται στο παρασκήνιο Ctrl -Ζ. Πριν θέσετε σε παύση μια εργασία, πρέπει να την φέρετε στο προσκήνιο με την εντολή fgκαι μόνο τότε σταμάτα. Έτσι, η εντολή fgμπορεί να εφαρμοστεί είτε σε εργασίες σε αναστολή είτε σε εργασία που εκτελείται στο παρασκήνιο.

Υπάρχει μεγάλη διαφορά μεταξύ εργασιών παρασκηνίου και εργασιών σε αναστολή. Μια εργασία που έχει ανασταλεί δεν λειτουργεί - δεν δαπανώνται χρήματα για αυτήν υπολογιστική ισχύςεπεξεργαστή. Αυτή η εργασία δεν εκτελεί καμία ενέργεια. Μια εργασία που έχει ανασταλεί καταλαμβάνει μια συγκεκριμένη ποσότητα μνήμης RAM του υπολογιστή· μετά από κάποιο χρονικό διάστημα, ο πυρήνας θα αντλήσει αυτό το μέρος της μνήμης σε HDD « poste restante" Αντίθετα, μια εργασία παρασκηνίου εκτελείται, χρησιμοποιεί μνήμη και κάνει κάποια πράγματα που μπορεί να θέλετε να κάνετε, αλλά μπορεί να εργάζεστε σε άλλα προγράμματα ταυτόχρονα.

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

/home/larry# ναι &

Εδώ η τυπική έξοδος δεν έχει ανακατευθυνθεί στη συσκευή /dev/null, επομένως μια ατελείωτη ροή y χαρακτήρων θα εκτυπωθεί στην οθόνη. Αυτό το νήμα δεν μπορεί να διακοπεί επειδή ο συνδυασμός πλήκτρων Ctrl -ντοδεν επηρεάζει τις εργασίες στο παρασκήνιο. Για να σταματήσετε αυτή την έξοδο, πρέπει να χρησιμοποιήσετε την εντολή fg, το οποίο θα φέρει την εργασία στο προσκήνιο και στη συνέχεια θα καταστρέψει την εργασία με έναν συνδυασμό πλήκτρων Ctrl -ντο .

Ας κάνουμε μια ακόμη παρατήρηση. Συνήθως ανά ομάδα fgκαι την ομάδα bgεπηρεάζουν εκείνες τις εργασίες που τέθηκαν σε αναστολή πιο πρόσφατα (αυτές οι εργασίες θα επισημαίνονται με ένα σύμβολο + δίπλα στον αριθμό εργασίας, εάν εισαγάγετε την εντολή θέσεις εργασίας). Εάν μία ή περισσότερες εργασίες εκτελούνται ταυτόχρονα, οι εργασίες μπορούν να τοποθετηθούν στο προσκήνιο ή στο παρασκήνιο, καθορίζοντας εντολές ως ορίσματα fgή εντολές bgτον αριθμό ταυτότητάς τους (ταυτότητα εργασίας). Για παράδειγμα, η εντολή fg %2βάζει την εργασία αριθμό 2 μπροστά και την εντολή bg %3βάζει την εργασία νούμερο 3 στο παρασκήνιο. Χρησιμοποιήστε PID ως ορίσματα εντολών fgΚαι bgειναι ΑΠΑΓΟΡΕΥΜΕΝΟ.

Επιπλέον, για να φέρετε μια εργασία στο προσκήνιο, μπορείτε απλώς να καθορίσετε τον αριθμό της. Ναι, ομάδα %2 θα είναι ισοδύναμο με την εντολή fg %2 .

Είναι σημαντικό να θυμάστε ότι η λειτουργία ελέγχου εργασιών ανήκει στο κέλυφος. Της ομάδας fg , bgΚαι θέσεις εργασίαςείναι εσωτερικές ομάδεςκοχύλια. Εάν, για κάποιο λόγο, χρησιμοποιείτε ένα κέλυφος εντολών που δεν υποστηρίζει λειτουργίες διαχείρισης εργασιών, τότε δεν θα βρείτε αυτές τις (και παρόμοιες) εντολές σε αυτό.

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

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

Τρόπος εκτέλεσης εντολών ή διεργασιών στο παρασκήνιο
Εάν η διεργασία σας εκτελείται σε παράθυρο τερματικού, μπορείτε να τη διακόψετε χρησιμοποιώντας την εντολή Ctrl+Z, πιθανότατα πολλοί άνθρωποι το γνωρίζουν αυτό και θα σκεφτούν, άρα τι. Και εδώ είναι τι είναι ενδιαφέρον, έχοντας έτσι αναστείλει τη διαδικασία, μπορούμε να τη συνεχίσουμε στο παρασκήνιο, για να το κάνουμε αυτό πρέπει να εισάγουμε την εντολή

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

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

Αποσυσκευασία του αρχείου στο παρασκήνιο

$ tar -czf home.tar.gz .

Κάντε κλικ Cntr+Z, μετά εισάγετε τις εντολές

$bg$δουλειές

Ο δεύτερος τρόπος είναι να προσθέσετε ένα & στο τέλος της εντολής, αυτό θα πει στο σύστημα να εκτελέσει την εντολή στο παρασκήνιο.

$ tar -czf home.tar.gz . &$θέσεις εργασίας

Αυτή η μέθοδος επιτρέπει στις διεργασίες να εκτελούνται στο παρασκήνιο, ωστόσο, STDIN, STDOUT, STDERRεξακολουθούν να είναι συνδεδεμένα στο τερματικό. Τώρα ας διασφαλίσουμε ότι η διαδικασία εκτελείται ακόμη και όταν το τερματικό είναι κλειστό.

Εκτέλεση διαδικασίας μετά το κλείσιμο του παραθύρου του τερματικού
Για να συνεχίσουμε να τρέχουμε τη διαδικασία ακόμα και μετά το κλείσιμο του παραθύρου του τερματικού, μπορούμε να χρησιμοποιήσουμε την εντολή αποκηρύσσω. Θα «απαγκιστρώσει» τη διαδικασία από το κέλυφος του παραθύρου του τερματικού, μετά την οποία θα εκτελεστεί ακόμη και μετά το κλείσιμο του παραθύρου της κονσόλας.
Ας δούμε ένα παράδειγμα χρήσης της τυπικής εντολής rsync, ας προσπαθήσουμε να το εκτελέσουμε στο παρασκήνιο και να αποσυνδέσουμε τη διαδικασία από το τερματικό.

$ sudo rsync Templates/* /var/www/html/ & $ jobs $ disown -h %1 $ jobs

Μπορείτε επίσης να χρησιμοποιήσετε την εντολή nohup, θα επιτρέψει στη διαδικασία να συνεχίσει να εκτελείται ακόμα και όταν ο χρήστης εξέλθει από το κέλυφος του συστήματος.

$ nohup tar -czf iso.tar.gz Πρότυπα/* & $ εργασίες

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

$firefox/dev/null &

ΣΕ Σύστημα Linux(και σχεδόν σε όλα τα συστήματα Unix) /dev/null είναι ένα ειδικό αρχείο συσκευής, το οποίο ονομάζεται επίσης "null συσκευή". Η εγγραφή σε αυτό πραγματοποιείται με επιτυχία, ανεξάρτητα από τον όγκο των πληροφοριών που καταγράφονται· η ανάγνωση από αυτήν ισοδυναμεί με την ανάγνωση του τέλους του αρχείου (ΕΟΦ).

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

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

Σήματα Linux

Στο Linux, υπάρχουν πάνω από τρεις δωδεκάδες σήματα που παράγονται από το σύστημα ή τις εφαρμογές. Ακολουθεί μια λίστα με τα πιο συχνά χρησιμοποιούμενα, τα οποία σίγουρα θα σας φανούν χρήσιμα κατά την ανάπτυξη σεναρίων γραμμή εντολών.
Κωδικός σήματος
Ονομα
Περιγραφή
1
ΣΙΓΧΟΥΠ
Κλείσιμο τερματικού
2
ΣΗΜΕΙΩΣΗ
Σήμα για διακοπή της διαδικασίας από το χρήστη από το τερματικό (CTRL + C)
3
SIGQUIT
Σήμα για διακοπή μιας διαδικασίας από το χρήστη από το τερματικό (CTRL + \) με ένδειξη αποθήκευσης μνήμης
9
ΣΙΓΚΙΛ
Ανεπιφύλακτη τερματισμός της διαδικασίας
15
SIGTERM
Σήμα αιτήματος τερματισμού διαδικασίας
17
SIGSTOP
Αναγκάζοντας μια διαδικασία να ανασταλεί αλλά όχι να τερματιστεί
18
SIGTSTP
Παύση μιας διαδικασίας από το τερματικό (CTRL+Z) αλλά όχι τερματισμός λειτουργίας
19
SIGCONT
Συνεχίστε την εκτέλεση μιας διαδικασίας που είχε σταματήσει προηγουμένως

Εάν το κέλυφος bash λάβει ένα σήμα SIGHUP όταν κλείνετε το τερματικό, εξέρχεται. Πριν από την έξοδο, στέλνει ένα σήμα SIGHUP σε όλες τις διεργασίες που εκτελούνται σε αυτό, συμπεριλαμβανομένων των εκτελούμενων σεναρίων.

Το σήμα SIGINT προκαλεί προσωρινή διακοπή της λειτουργίας. Ο πυρήνας του Linux σταματά να εκχωρεί χρόνο επεξεργαστή στο κέλυφος. Όταν συμβεί αυτό, το κέλυφος ειδοποιεί τις διαδικασίες στέλνοντάς τους ένα σήμα SIGINT.

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

Αποστολή σημάτων σε σενάρια

Το κέλυφος bash σάς επιτρέπει να στέλνετε σήματα σε σενάρια χρησιμοποιώντας συντομεύσεις πληκτρολογίου. Αυτό είναι πολύ βολικό εάν πρέπει να διακόψετε προσωρινά ένα σενάριο που εκτελείται ή να τερματίσετε τη λειτουργία του.

Τερματισμός διαδικασίας

Συνδυασμός πλήκτρα CTRLΤο +C δημιουργεί το σήμα SIGINT και το στέλνει σε όλες τις διεργασίες που εκτελούνται στο κέλυφος, προκαλώντας τον τερματισμό τους.

Ας εκτελέσουμε την ακόλουθη εντολή στο κέλυφος:

100 $ ύπνος
Μετά από αυτό, θα ολοκληρώσουμε την εργασία του με τον συνδυασμό πλήκτρων CTRL + C.


Τερματίστε μια διαδικασία από το πληκτρολόγιο

Προσωρινή διακοπή της διαδικασίας

Ο συνδυασμός πλήκτρων CTRL + Z δημιουργεί το σήμα SIGTSTP, το οποίο αναστέλλει τη διαδικασία αλλά δεν την τερματίζει. Μια τέτοια διαδικασία παραμένει στη μνήμη και η εργασία της μπορεί να συνεχιστεί. Ας εκτελέσουμε την εντολή στο κέλυφος:

100 $ ύπνος
Και διακόψτε το προσωρινά με το συνδυασμό πλήκτρων CTRL + Z.


Παύση της διαδικασίας

Ο αριθμός σε αγκύλες είναι ο αριθμός εργασίας που το κέλυφος εκχωρεί στη διαδικασία. Το κέλυφος αντιμετωπίζει τις διαδικασίες που εκτελούνται μέσα σε αυτό ως εργασίες με μοναδικούς αριθμούς. Στην πρώτη διαδικασία εκχωρείται ο αριθμός 1, στη δεύτερη - 2, και ούτω καθεξής.

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

Μπορείτε να προβάλετε εργασίες σε αναστολή με την ακόλουθη εντολή:

Ψ –λ


Λίστα εργασιών

Στη στήλη S, η οποία εμφανίζει την κατάσταση της διεργασίας, εμφανίζεται το T για διεργασίες που έχουν ανασταλεί. Αυτό υποδηλώνει ότι η εντολή είναι είτε σε αναστολή είτε σε κατάσταση ίχνους.

Εάν πρέπει να τερματίσετε μια διαδικασία που έχει ανασταλεί, μπορείτε να χρησιμοποιήσετε την εντολή kill. Μπορείτε να διαβάσετε λεπτομέρειες σχετικά με αυτό.

Η κλήση της μοιάζει με αυτό:

Kill processID

Υποκλοπή σήματος

Για να ενεργοποιήσετε την παρακολούθηση σήματος Linux σε ένα σενάριο, χρησιμοποιήστε την εντολή trap. Εάν το σενάριο λάβει το σήμα που καθορίστηκε κατά την κλήση αυτής της εντολής, το επεξεργάζεται ανεξάρτητα, ενώ το κέλυφος δεν θα επεξεργαστεί ένα τέτοιο σήμα.

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

Ας δούμε ένα παράδειγμα που δείχνει πώς η εντολή trap καθορίζει τον κώδικα που θα εκτελεστεί και μια λίστα σημάτων, διαχωρισμένων με κενά, που θέλουμε να υποκλαπούν. Σε αυτή την περίπτωση είναι μόνο ένα σήμα:

#!/bin/bash trap "echo " Trapped Ctrl-C"" SIGINT echo Αυτό είναι ένα δοκιμαστικό σενάριο count=1 ενώ [ $count -le 10 ] do echo "Loop #$count" sleep 1 count=$(($ καταμέτρηση + 1)) έγινε
Η εντολή trap που χρησιμοποιείται σε αυτό το παράδειγμα βγαίνει γραπτό μήνυμακάθε φορά που ανιχνεύει ένα σήμα SIGINT, το οποίο μπορεί να δημιουργηθεί πατώντας Ctrl + C στο πληκτρολόγιο.


Υποκλοπή σήματος

Κάθε φορά που πατάτε τα πλήκτρα CTRL + C , το σενάριο εκτελεί την εντολή echo που καθορίζεται κατά την κλήση του ίχνους αντί να αφήνει το κέλυφος να το τερματίσει.

Μπορείτε να παρεμποδίσετε το σήμα εξόδου του σεναρίου χρησιμοποιώντας το όνομα του σήματος EXIT όταν καλείτε την εντολή trap:

#!/bin/bash trap "echo Goodbye..." EXIT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) ολοκληρωθεί


Αναχαίτιση του σήματος εξόδου του σεναρίου

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

Τροποποίηση υποκλοπών σημάτων και ακύρωση υποκλοπής

Για να τροποποιήσετε τα σήματα που παρεμποδίζονται από το σενάριο, μπορείτε να εκτελέσετε την εντολή trap με νέες παραμέτρους:

#!/bin/bash trap "echo "Ctrl-C είναι παγιδευμένο." SIGINT count=1 ενώ [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1) ) έγινε παγίδα "echo "Τροποποίησα την παγίδα!"" SIGINT count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) ολοκληρωμένο


Τροποποίηση υποκλοπής σήματος

Μετά την τροποποίηση, τα σήματα θα υποβληθούν σε επεξεργασία με νέο τρόπο.

Η υποκλοπή σήματος μπορεί επίσης να ακυρωθεί εκτελώντας απλώς την εντολή trap, περνώντας της μια διπλή παύλα και το όνομα του σήματος:

#!/bin/bash trap "echo "Ctrl-C είναι παγιδευμένο." SIGINT count=1 ενώ [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1) ) ολοκληρώθηκε παγίδα -- SIGINT echo "Μόλις αφαίρεσα την παγίδα" count=1 ενώ [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) ολοκληρωθεί
Εάν το σενάριο λάβει ένα σήμα πριν ακυρωθεί η υποκλοπή, θα το επεξεργαστεί όπως καθορίζεται στο τρέχουσα ομάδαπαγίδα. Ας τρέξουμε το σενάριο:

$ ./myscript
Και πατήστε CTRL + C στο πληκτρολόγιο.


Το σήμα αναχαιτίστηκε πριν ακυρωθεί η υποκλοπή.

Το πρώτο πάτημα του CTRL + C συνέβη τη στιγμή της εκτέλεσης του σεναρίου, όταν ίσχυε η υποκλοπή σήματος, έτσι το σενάριο εκτέλεσε την εντολή echo που είχε εκχωρηθεί στο σήμα. Αφού η εκτέλεση έφτασε στην εντολή unhook, η εντολή CTRL + C λειτούργησε ως συνήθως, τερματίζοντας το σενάριο.

Εκτέλεση σεναρίων γραμμής εντολών στο παρασκήνιο

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

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

#!/bin/bash count=1 ενώ [ $count -le 10 ] θα κοιμηθεί 1 count=$(($count + 1)) τελειώσει
Ας το εκτελέσουμε καθορίζοντας τον χαρακτήρα συμπλεκτικού (&) μετά το όνομα:

$ ./myscipt &
Αυτό θα αναγκάσει να εκτελεστεί ως διαδικασία παρασκηνίου.


Εκτέλεση σεναρίου στο παρασκήνιο

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

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


Κατάλογος διαδικασιών

Με αυτήν την προσέγγιση, εάν βγείτε από το τερματικό, το σενάριο που εκτελείται στο παρασκήνιο θα εξέλθει επίσης.

Τι γίνεται αν θέλετε το σενάριο να συνεχίσει να εκτελείται μετά το κλείσιμο του τερματικού;

Εκτέλεση σεναρίων που δεν εξέρχονται κατά το κλείσιμο του τερματικού

Τα σενάρια μπορούν να εκτελεστούν σε διεργασίες παρασκηνίου ακόμη και μετά την έξοδο από την περίοδο λειτουργίας τερματικού. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε την εντολή nohup. Αυτή η εντολή σάς επιτρέπει να εκτελέσετε ένα πρόγραμμα αποκλείοντας τα σήματα SIGHUP που αποστέλλονται στη διεργασία. Ως αποτέλεσμα, η διαδικασία θα εκτελεστεί ακόμη και όταν βγείτε από το τερματικό στο οποίο ξεκίνησε.

Ας εφαρμόσουμε αυτήν την τεχνική κατά την εκτέλεση του σεναρίου μας:

Nohup ./myscript &
Αυτό θα βγει στο τερματικό.


Team nohup

Η εντολή nohup αποσυνδέει μια διαδικασία από το τερματικό. Αυτό σημαίνει ότι η διαδικασία θα χάσει τις αναφορές σε STDOUT και STDERR. Για να μην χαθεί η έξοδος δεδομένων από το σενάριο, το nohup ανακατευθύνει αυτόματα τα μηνύματα που φτάνουν στο STDOUT και STDERR στο αρχείο nohup.out.

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

Προβολή εργασιών

Η εντολή εργασιών σάς επιτρέπει να προβάλετε τις τρέχουσες εργασίες που εκτελούνται στο κέλυφος. Ας γράψουμε το ακόλουθο σενάριο:

#!/bin/bash count=1 ενώ [ $count -le 10 ] do echo "Loop #$count" sleep 10 count=$(($count + 1)) ολοκληρωθεί
Ας το τρέξουμε:

$ ./myscript
Και διακόψτε το προσωρινά με το συνδυασμό πλήκτρων CTRL + Z.


Εκτέλεση και παύση ενός σεναρίου

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

$ ./myscript > outfile &
Εκτελώντας τώρα την εντολή jobs, θα δούμε πληροφορίες τόσο για το σενάριο που έχει ανασταλεί όσο και για αυτό που εκτελείται στο παρασκήνιο.


Λήψη πληροφοριών για σενάρια

Ο διακόπτης -l κατά την κλήση της εντολής εργασιών υποδεικνύει ότι χρειαζόμαστε πληροφορίες σχετικά με τα αναγνωριστικά διεργασίας.

Επανεκκίνηση εργασιών που έχουν ανασταλεί

Για να επανεκκινήσετε το σενάριο στο παρασκήνιο, μπορείτε να χρησιμοποιήσετε την εντολή bg.

Ας τρέξουμε το σενάριο:

$ ./myscript
Πατήστε CTRL + Z, το οποίο θα σταματήσει προσωρινά την εκτέλεσή του. Ας εκτελέσουμε την ακόλουθη εντολή:

$bg


εντολή bg

Το σενάριο εκτελείται τώρα στο παρασκήνιο.

Εάν έχετε πολλές εργασίες σε αναστολή, μπορείτε να μεταβιβάσετε τον αριθμό εργασίας στην εντολή bg για επανεκκίνηση μιας συγκεκριμένης εργασίας.

Για επανεκκίνηση μιας εργασίας σε κανονική λειτουργίαχρησιμοποιήστε την εντολή fg:

Σχεδιασμός εκτέλεσης σεναρίων

Το Linux παρέχει μερικούς τρόπους εκτέλεσης σεναρίων bash σε μια δεδομένη στιγμή. Αυτά είναι το at command και το cron job scheduler.

Η εντολή at μοιάζει με αυτό:

Την ώρα [-f όνομα αρχείου]
Αυτή η εντολή αναγνωρίζει πολλές μορφές χρόνου.

  • Τυπικό, που δείχνει ώρες και λεπτά, για παράδειγμα - 10:15.
  • Χρήση ενδείξεων AM/PM, πριν ή μετά το μεσημέρι, για παράδειγμα - 22:15.
  • Χρησιμοποιώντας ειδικά ονόματα όπως τώρα , μεσημέρι , μεσάνυχτα .
Εκτός από τη δυνατότητα καθορισμού της ώρας εκτέλεσης μιας εργασίας, η εντολή at μπορεί επίσης να μεταβιβάσει μια ημερομηνία χρησιμοποιώντας μία από τις υποστηριζόμενες μορφές της.
  • Μια τυπική μορφή ημερομηνίας στην οποία η ημερομηνία γράφεται χρησιμοποιώντας τα μοτίβα MMDDYY, MM/DD/YY ή DD.MM.YY.
  • Μια αναπαράσταση κειμένου της ημερομηνίας, για παράδειγμα, 4 Ιουλίου ή 25 Δεκεμβρίου, ενώ το έτος μπορεί να καθοριστεί ή μπορείτε να το κάνετε χωρίς αυτό.
  • Ηχογράφηση όπως τώρα + 25 λεπτά.
  • Προβολή ηχογράφησης αύριο 22:15.
  • Τύπος εγγραφής 10:15 + 7 ημέρες.
Ας μην εμβαθύνουμε σε αυτό το θέμα, ας δούμε μια απλή περίπτωση χρήσης για την εντολή:

$ στο -f ./myscript τώρα


Προγραμματισμός εργασιών χρησιμοποιώντας την εντολή at

Ο διακόπτης -M κατά την κλήση στο χρησιμοποιείται για την αποστολή των εξόδων του σεναρίου ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ, εάν το σύστημα έχει ρυθμιστεί ανάλογα. Σε περίπτωση αποστολής ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗδεν είναι δυνατό, αυτός ο διακόπτης απλώς θα καταστείλει την έξοδο.

Για να δείτε τη λίστα των εργασιών που περιμένουν να εκτελεστούν, μπορείτε να χρησιμοποιήσετε την εντολή atq:


Λίστα εκκρεμών εργασιών

Διαγραφή εκκρεμών εργασιών

Η εντολή atrm σάς επιτρέπει να διαγράψετε μια εργασία σε εκκρεμότητα. Όταν το καλείτε, υποδείξτε τον αριθμό εργασίας:

$atrm 18


Διαγραφή εργασίας

Εκτέλεση σεναρίων σε ένα χρονοδιάγραμμα

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

Το Linux διαθέτει ένα βοηθητικό πρόγραμμα crontab που σας επιτρέπει να προγραμματίζετε σενάρια που πρέπει να εκτελούνται τακτικά.

Το Crontab εκτελείται στο παρασκήνιο και, με βάση τα δεδομένα στους λεγόμενους πίνακες cron, εκτελεί προγραμματισμένες εργασίες.

Για να προβάλετε έναν υπάρχοντα πίνακα εργασιών cron, χρησιμοποιήστε την ακόλουθη εντολή:

$ crontab –l
Όταν προγραμματίζετε ένα σενάριο για εκτέλεση σε ένα χρονοδιάγραμμα, το crontab δέχεται δεδομένα σχετικά με το πότε πρέπει να εκτελεστεί η εργασία στην ακόλουθη μορφή:

Λεπτό, ώρα, ημέρα του μήνα, μήνα, ημέρα της εβδομάδας.
Για παράδειγμα, εάν θέλετε μια συγκεκριμένη εντολή με όνομα script να εκτελείται κάθε μέρα στις 10:30, αυτό θα αντιστοιχεί στην ακόλουθη καταχώρηση στον πίνακα εργασιών:

30 10 * * * εντολή
Εδώ, ο χαρακτήρας μπαλαντέρ "*" που χρησιμοποιείται για τα πεδία της ημέρας του μήνα, του μήνα και της ημέρας της εβδομάδας υποδεικνύει ότι το cron πρέπει να εκτελεί την εντολή κάθε μέρα κάθε μήνα στις 10:30 π.μ.

Εάν, για παράδειγμα, θέλετε το σενάριο να εκτελείται στις 4:30 μ.μ. κάθε Δευτέρα, θα χρειαστεί να δημιουργήσετε την ακόλουθη καταχώρηση στον πίνακα εργασιών:

30 16 * * 1 εντολή
Η αρίθμηση των ημερών της εβδομάδας ξεκινά από το 0, το 0 σημαίνει Κυριακή, το 6 σημαίνει Σάββατο. Εδώ είναι ένα άλλο παράδειγμα. Εδώ η εντολή θα εκτελείται στις 12 το μεσημέρι την πρώτη ημέρα κάθε μήνα.

00 12 1 * * εντολή
Οι μήνες αριθμούνται ξεκινώντας από το 1.
Για να προσθέσετε μια καταχώρηση σε έναν πίνακα, πρέπει να καλέσετε το crontab με το διακόπτη -e:

Crontab –ε
Στη συνέχεια, μπορείτε να εισαγάγετε εντολές δημιουργίας χρονοδιαγράμματος:

30 10 * * * /home/likegeeks/Desktop/myscript
Χάρη σε αυτήν την εντολή, το σενάριο θα καλείται κάθε μέρα στις 10:30. Εάν αντιμετωπίσετε το σφάλμα "Προσωρινά μη διαθέσιμος πόρος", εκτελέστε την παρακάτω εντολή ως root:

$ rm -f /var/run/crond.pid
Μπορείτε να οργανώσετε την περιοδική εκκίνηση σεναρίων χρησιμοποιώντας το cron ακόμα πιο εύκολα χρησιμοποιώντας αρκετούς ειδικούς καταλόγους:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Η τοποθέτηση ενός αρχείου σεναρίου σε ένα από αυτά θα προκαλέσει την ωριαία, ημερήσια, εβδομαδιαία ή μηνιαία εκτέλεση, αντίστοιχα.

Εκτελέστε σενάρια κατά τη σύνδεση και την εκκίνηση του κελύφους

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

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
Για να εκτελέσετε ένα σενάριο κατά τη σύνδεση, πραγματοποιήστε την κλήση του στο αρχείο .bash_profile.

Τι γίνεται με την εκτέλεση σεναρίων όταν ανοίγετε ένα τερματικό; Το αρχείο .bashrc θα σας βοηθήσει να το οργανώσετε.

Αποτελέσματα

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

Αγαπητοι αναγνωστες! Χρησιμοποιείτε εργαλεία για να προγραμματίσετε σενάρια γραμμής εντολών για εκτέλεση σε ένα χρονοδιάγραμμα; Εάν ναι, πείτε μας για αυτούς.

Η υπηρεσία τερματικού Linux εκτελείται σε λειτουργία μίας εργασίας από προεπιλογή. Αυτό σημαίνει ότι οποιοδήποτε πλήρωμα εκτοξεύεται μπλοκάρει το τερματικό μέχρι να ολοκληρωθεί. Αυτή η προσέγγιση δεν είναι βολική όταν εκτελούνται προγράμματα που απαιτούν μεγάλο χρόνο εκτέλεσης. Αυτό το πρόβλημαμπορεί να λυθεί με δύο τρόπους: ανοίξτε ένα πρόσθετο παράθυρο τερματικού και εκτελέστε μια άλλη εντολή σε αυτό ή χρησιμοποιήστε τη λειτουργία παρασκηνίου. Όλα τα τρέχοντα λειτουργικά συστήματα, συμπεριλαμβανομένου του Linux, είναι multitasking, πράγμα που σημαίνει τη δυνατότητα ταυτόχρονης εκτέλεσης πολλών προγραμμάτων.

Πώς μπορώ να εκτελέσω μια ταξιαρχία στο παρασκήνιο, ώστε να έχω άμεση πρόσβαση στη διεπαφή της γραμμής εντολών; Ένα πλήρωμα που έχει αναγκαστεί να τρέξει ονομάζεται διαδικασία παρασκηνίου. Οι διαδικασίες παρασκηνίου δεν εμφανίζονται στην οθόνη. Για παράδειγμα, ο διακομιστής HTTPD Apache εκτελείται στο παρασκήνιο για την εξυπηρέτηση ιστοσελίδων. Μπορείτε να βάλετε ένα σενάριο φλοιού ή οποιαδήποτε εντολή σε λειτουργία χαμηλής προτεραιότητας. Μια εργασία (για παράδειγμα, ένα πλήρωμα ή ένα σενάριο) μπορεί να τεθεί στο παρασκήνιο προσθέτοντας ένα "&" στο τέλος της γραμμής εντολών. Αυτή η δήλωση τοποθετεί την εντολή στο παρασκήνιο και ελευθερώνει χώρο στο τερματικό. Μια ομάδα που τρέχει στο παρασκήνιο ονομάζεται δουλειά. Ενώ εκτελείται η εντολή φόντου, είναι δυνατή η εκτέλεση οποιωνδήποτε άλλων εντολών. Η σύνταξη έχει ως εξής:

εντολή & όνομα σεναρίου & / path/to/command arg1 arg2 & command-1 | εντολή-2 arg1 & εντολή-1 | command-2 -arg1 -arg2 >/path/to/output &

Για να εκτελέσετε προγράμματα στο παρασκήνιο χωρίς να μπλοκάρετε το παράθυρο τερματικού, πρέπει να χρησιμοποιήσετε τον ειδικό εκπαιδευτή "&". Τοποθετήστε αυτόν τον χαρακτήρα στο τέλος της γραμμής αφού καθορίσετε το όνομα της εντολής, τις επιλογές και τις παραμέτρους εισαγωγής. ΣΕ γενική εικόνααυτή η ακολουθία μπορεί να εισαχθεί ως "όνομα_εντολής -επιλογή εισαγωγή_παράμετρος &".

ls ~/* > ~/test-file.txt &
18960

Αφού πατήσετε το κουμπί Enter, το πρόγραμμα θα ξεκινήσει αυτόματα στο παρασκήνιο. Σε αυτήν την περίπτωση, το τερματικό θα εμφανίσει μια γραμμή με το ακόλουθο περιεχόμενο «[task_number] process_identifier» και θα σας ζητήσει να εισαγάγετε μια νέα εντολή.

Βρείτε εντολές που εκτελούνται στο παρασκήνιο στο Linux

Εκτελέστε την ακόλουθη εντολή:

Παράδειγμα εξόδου δεδομένων:

Εκτελείται εύρεση / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ Εκτέλεση grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Πού είναι τα αναγνωριστικά παραγγελίας.

Για να εμφανίσετε αναγνωριστικά διεργασίας για αναγνωριστικά εργασιών εκτός από τα τυπικά cast, περάστε την επιλογή -l:

Παράδειγμα εξόδου δεδομένων:

7307 Εκτέλεση εύρεσης / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ 7324 Εκτέλεση grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Για να εμφανίσετε μόνο τα αναγνωριστικά διεργασίας, εισαγάγετε:

Παράδειγμα εξόδου δεδομένων:

Σταματήστε την εκτέλεση εντολών που εκτελούνται στο παρασκήνιο

Για να τερματίσετε βίαια ή με χάρη μια διαδικασία, χρησιμοποιήστε την εντολή kill. Η σύνταξη έχει ως εξής:

σκοτώστε το PID
σκοτώστε -15 PID
σκοτώστε -9 PID
killall διαδικασία-Όνομα-Εδώ
killall -15 διεργασία-Όνομα-Εδώ
killall -9 διεργασία-Όνομα-Εδώ

Επιστροφή ενός προγράμματος σε λειτουργία προσκηνίου στο Linux

Το Linux σάς επιτρέπει όχι μόνο να εκτελείτε προγράμματα στο παρασκήνιο, αλλά και να τα επαναφέρετε στην κανονική εκτέλεση εάν το επιθυμείτε. Υπάρχουν δύο εργαλεία για αυτό: η εντολή ( Μια ομάδα είναι μια ομάδα ανθρώπων που ενώνονται με κοινά κίνητρα και ενδιαφέροντα.) fg και τον τελεστή %. Η αρχή της προσπάθειάς τους είναι εξαιρετικά απλή. Το fg απαιτεί τον καθορισμό του αριθμού εργασίας ως παράμετρο και πρέπει να αντικατασταθεί με το % αμέσως μετά τον χειριστή χωρίς κενά.

find / -name .ini 2> ~/results.txt &
19090
fg 1
bash: fg: η εργασία έληξε
+ Έξοδος 1 find / -name .ini 2> ~/results.txt

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

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

Όλα τα προγράμματα μπορούν να χωριστούν σε διάφορους τύπους:

  • Δυαδικά προγράμματα- περιέχει οδηγίες προς τον επεξεργαστή που είναι έτοιμες για εκτέλεση, τα περισσότερα προγράμματα είναι σε αυτήν τη μορφή, είναι γρήγορα και εκτελούνται αμέσως από το σύστημα.
  • Προγράμματα bytecode- αυτές δεν είναι πλέον οδηγίες επεξεργαστή, αλλά οδηγίες μιας συγκεκριμένης εικονικής μηχανής που μπορεί να τις εκτελέσει· χωρίς εικονική μηχανή, τέτοιες εντολές δεν μπορούν να εκτελεστούν. Τέτοια προγράμματα καταναλώνουν περισσότερους πόρους, αλλά είναι επίσης αρκετά γρήγορα, το πλεονέκτημά τους είναι ότι μπορούν να εκτελεστούν χωρίς τροποποίηση οπουδήποτε μπορούν να λειτουργήσουν εικονική μηχανή. Τέτοια προγράμματα περιλαμβάνουν προγράμματα Java.
  • Προγράμματα σεναρίων- αυτά τα προγράμματα αποτελούνται από ένα σύνολο εντολών σε απλό κείμενο που εκτελούνται από έναν ειδικό διερμηνέα. Τέτοια προγράμματα είναι πιο αργά, αλλά είναι πιο εύκολο να αναπτυχθούν και ο κώδικάς τους μπορεί να αλλάξει εύκολα και γρήγορα.

Τώρα ας προχωρήσουμε στην εκκίνηση προγραμμάτων.

Εκτέλεση προγραμμάτων στο τερματικό

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

/path/to/file/programεπιλογές

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

Οι προγραμματιστές έχουν βρει μια λύση. Δημιουργήθηκε μια μεταβλητή PATH, η οποία αποθηκεύει όλες τις διαδρομές προς τους φακέλους όπου συνήθως βρίσκονται τα προγράμματα - /bin, /sbin, /usr/bin, /usr/sbin και ούτω καθεξής. Μπορείτε να δείτε τα περιεχόμενά του με την εντολή:

Όταν πληκτρολογείτε το όνομα ενός προγράμματος, το σύστημα αναζητά ένα εκτελέσιμο αρχείο με αυτό το όνομα σε όλους τους φακέλους από το PATH και αν το βρει, το εκτελεί. Εάν δεν υπάρχει τέτοιο αρχείο, εμφανίζεται το μήνυμα "η εντολή δεν βρέθηκε". Έτσι, για να εκκινήσετε ένα από τα προγράμματα του συστήματος, απλώς πληκτρολογήστε το όνομά του εκτελέσιμο αρχείο, Για παράδειγμα:

Και μπορείτε να περάσετε παραμέτρους μετά από ένα διάστημα:

Όταν το πρόγραμμα δεν βρίσκεται σε αυτούς τους καταλόγους, πρέπει να καθορίσετε την πλήρη διαδρομή προς αυτό:

/usr/local/bin/ls1

Εάν θέλετε να εκτελέσετε το πρόγραμμα μέσω τερματικό ubuntu, που βρίσκεται στον τρέχοντα φάκελο, τότε η κατάσταση θα είναι ελαφρώς διαφορετική. Το σύστημα αναζητά μόνο τους φακέλους στη μεταβλητή PATH, δεν πραγματοποιεί αναζήτηση στον τρέχοντα κατάλογο. Επομένως, εάν πληκτρολογήσετε το όνομα του εκτελέσιμου αρχείου, θα λάβετε ένα σφάλμα. Πρέπει να καθορίσετε την πλήρη διαδρομή, όπως θυμάστε ότι θα είναι./:

Μερικές φορές καθίσταται απαραίτητο να μεταφέρετε κάποιο ειδικό. Για παράδειγμα, η μεταβλητή EDITOR υποδεικνύει ποια επεξεργαστής κειμένουπρέπει να χρησιμοποιείται ως προεπιλογή. Μπορείτε να καθορίσετε ένα όνομα μεταβλητής και την τιμή της πριν από το όνομα της εντολής χρησιμοποιώντας τη σύνταξη:

variable_name = εντολή τιμής

Για παράδειγμα:

EDITOR=nano visudo

Από προεπιλογή, αυτή η εντολή ανοίγει τις ρυθμίσεις στο πρόγραμμα επεξεργασίας Vim, αλλά με αυτό μεταβλητή περιβάλλοντοςοι ρυθμίσεις θα ανοίξουν στο nano editor.

Εκτέλεση προγραμμάτων ως άλλος χρήστης

Γνωρίζετε ήδη πώς να εκτελείτε το πρόγραμμα τερματικό linux, τι γίνεται με άλλους χρήστες; Στα Windows, είναι αρκετά συνηθισμένο να εκτελούνται προγράμματα ως διαχειριστής, έτσι ώστε το πρόγραμμα να αποκτήσει περισσότερα δικαιώματα πρόσβασης στο σύστημα. Στο Linux, το βοηθητικό πρόγραμμα sudo χρησιμοποιείται για αυτό. Το όνομά της μπορεί να αποκρυπτογραφηθεί ως μικρόμάγισσα u ser κάνω- αλλαγή χρήστη και εκτέλεση. Από προεπιλογή, το βοηθητικό πρόγραμμα εκτελεί την εντολή ως υπερχρήστης ρίζας:

εντολή sudo
sudo Whoami

Αλλά χρησιμοποιώντας την επιλογή -u, μπορείτε να εκτελέσετε το πρόγραμμα όπως οποιοσδήποτε χρήστης είναι συνδεδεμένος στο σύστημα:

εντολή ονόματος χρήστη sudo -u
sudo -u postgres whoami

Η εντολή whoami (who am I) εμφανίζει το όνομα του τρέχοντος χρήστη.

Πώς να εκτελέσετε ένα πρόγραμμα στο παρασκήνιο

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

όνομα_προγράμματος &

Για παράδειγμα:

dd if=/dev/zero of=~/file count=100000 &

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

Πώς να εκτελέσετε ένα σενάριο στο Linux

Είπαμε ήδη ότι τα προγράμματα χωρίζονται σε δυαδικά και ερμηνευόμενα. Προηγουμένως, μιλούσαμε μόνο για δυαδικά προγράμματα. Για να εκτελέσετε ερμηνευμένα προγράμματα, χρειάζεστε απευθείας διερμηνέα· τέτοια προγράμματα περιλαμβάνουν αυτά που είναι γραμμένα σε γλώσσες όπως Java, Python, Perl, Ruby, PHP, NodeJS και πολλές άλλες. Η σύνταξη για την εκκίνηση ενός τέτοιου προγράμματος είναι διαφορετική:

διερμηνέας /path/to/file/programεπιλογές

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

python hellowrld.py

Και τα προγράμματα Java πρέπει να ξεκινήσουν ως εξής:

java -jar πρόγραμμα.jar

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

Ή απλώς πληκτρολογήστε τη διαδρομή προς το σενάριο:

Το ίδιο το κέλυφος καθορίζει τα σενάρια του από τη σημαία εκτελέσιμοτητας και τα εκτελεί. Εάν η σημαία εκτελέσιμου δεν έχει οριστεί, τότε θα πρέπει να την προσθέσετε:

sudo chmod u+x ./script.sh

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

Εκτέλεση προγραμμάτων Linux σε GUI

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

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

Εκτέλεση σεναρίων σε γραφική διεπαφή. Μπορείτε να βρείτε όλες τις συντομεύσεις μενού στον κατάλογο /usr/share/applications/. Οποιοδήποτε πρόγραμμα μπορεί να ξεκινήσει κάνοντας διπλό κλικ από εδώ. Αλλά ας δούμε τι υπάρχει μέσα στη συντόμευση. Για να το κάνετε αυτό, ανοίξτε την σε ένα πρόγραμμα επεξεργασίας κειμένου:


Μεταξύ άλλων, η γραμμή Exec καθορίζει την εντολή που εκτελείται προγράμματα linuxόταν κάνετε διπλό κλικ σε μια συντόμευση. Μπορείτε να πάρετε μία από τις υπάρχουσες συντομεύσεις και να δημιουργήσετε τη δική σας βάσει αυτής. Αυτό είναι απλά το όνομα του προγράμματος. Αλλά είναι σημαντικό να σημειωθεί ότι είναι καλύτερο να καθορίσετε την πλήρη διαδρομή σε μέρη όπως συντομεύσεις, σενάρια, cron και ούτω καθεξής, αυτό θα μειώσει τον αριθμό των σφαλμάτων, καθώς δεν μπορείτε να γνωρίζετε εάν το σύστημα σε αυτήν την περίπτωση ελέγχει PATH ή αναζητώντας το πρόγραμμα μόνο στον τρέχοντα κατάλογο. Τώρα ξέρετε τα πάντα για το πώς να εκτελέσετε ένα πρόγραμμα στο Linux.

συμπεράσματα

Σε αυτό το άρθρο εξετάσαμε πώς να εκτελέσετε ένα πρόγραμμα μέσω του τερματικού του ubuntu ή σε άλλο Διανομές Linux. Παρόλο που αυτό φαίνεται σαν ένα πολύ απλό θέμα, υπάρχουν μερικά ενδιαφέροντα σημεία που μπορεί να είναι χρήσιμα. Αλλά γνωρίζετε ήδη γι 'αυτούς. Εάν έχετε οποιεσδήποτε ερωτήσεις, ρωτήστε στα σχόλια!