Bash Subshells και Παράλληλη Επεξεργασία
ΕΝΑ κέλυφος είναι μια βασική διεπαφή για την εισαγωγή εντολών στο α Linux Σύστημα. Με αυτό, μπορείτε να εισαγάγετε απευθείας μια εντολή ή να καθορίσετε ένα αρχείο (script) που περιέχει μια ακολουθία εντολών που θα εκτελεστούν. Τα κελύφη είναι οργανωμένα σε μια ιεραρχία και οποιοδήποτε κέλυφος μπορεί να δημιουργήσει ένα νέο κέλυφος. Το νέο κέλυφος θεωρείται παιδί διαδικασία—α υποκέλυφος—του γονικού κελύφους που το δημιουργεί.
Από προεπιλογή, ένα υποκέλυφος εξαρτάται από το γονικό του υπό την έννοια ότι εάν τερματιστεί η γονική διαδικασία, τερματίζεται και το υποκέλυφος. Οποιαδήποτε έξοδος μεταβιβάζεται από το υποκέλυφος στο γονικό κέλυφος.

Πώς να δημιουργήσετε ένα υποκέλυφος
Σε ένα σενάριο κελύφους Bash, δημιουργήστε ένα υποκέλυφος χρησιμοποιώντας τον συμβολισμό της παρένθεσης:
#!/bin/bash
# subshell-example.sh με ατελείωτο βρόχο
(
ενώ [1]
κάνω
echo "Υποκέλυφος που τρέχει.. ."
Έγινε
)
Στο παράδειγμα, ο βρόχος while περικλείεται σε παρένθεση, γεγονός που προκαλεί την εκτέλεσή του σε ένα υποκέλυφος του φλοιού στο οποίο εκτελείται το αρχείο σεναρίου.
Εκτέλεση ενός υποκελύφους στο παρασκήνιο
Αν δεν καθορίσετε ότι το υποκέλυφος πρόκειται να εκτελεστεί στο παρασκήνιο, το γονικό κέλυφος περιμένει να τελειώσει το υποκέλυφος πριν συνεχίσει με το υπόλοιπο σενάριο. Ωστόσο, για να τρέξετε τα υποκελύφη παράλληλα, εκτελέστε τα στο παρασκήνιο, κάτι που ολοκληρώνεται με τον χαρακτήρα σύμφωνο μετά την έκφραση του υποκελύφους, όπως φαίνεται εδώ:
#!/bin/bash
για ip σε {1..254}. κάνω
host=192.168.1.$ip
(ping -c 1 $host > /dev/null
αν [ "$?" = 0 ]
τότε
echo $host
fi) &
Έγινε
Εκτέλεση πολλαπλών υποκελύφων παράλληλα
Εάν δημιουργήσετε πολλά υποκελύφη ως διαδικασίες φόντου, μπορείτε να εκτελέσετε εργασίες παράλληλα. Συνήθως, το λειτουργικό σύστημα χρησιμοποιεί διαφορετικούς επεξεργαστές ή πυρήνες για κάθε διεργασία και υποδιεργασία, υποθέτοντας ότι υπάρχουν τουλάχιστον τόσοι επεξεργαστές ή πυρήνες όσοι και διεργασίες. Διαφορετικά, οι εργασίες ανατίθενται στους ίδιους επεξεργαστές ή πυρήνες. Σε αυτήν την περίπτωση, ο επεξεργαστής ή ο πυρήνας αλλάζει συνεχώς μεταξύ των εργασιών που έχουν ανατεθεί μέχρι να ολοκληρωθούν οι εργασίες.
Χρησιμοποιήστε τη δήλωση αναμονής για να πείτε στη γονική διαδικασία να περιμένει να ολοκληρωθούν οι υποδιεργασίες προτού προχωρήσει με το υπόλοιπο σενάριο:
Χρήσεις για υποκελύφη
Τα δευτερεύοντα κελύφη είναι χρήσιμα όταν οι εντολές πρέπει να εκτελεστούν σε ένα συγκεκριμένο περιβάλλον ή κατάλογο. Εάν κάθε εντολή εκτελείται σε διαφορετικό υποκέλυφος, δεν υπάρχει κίνδυνος να μπερδευτούν οι ρυθμίσεις μεταβλητών. Μετά την ολοκλήρωση, οι ρυθμίσεις και ο τρέχων κατάλογος δεν χρειάζονται επαναφορά, καθώς το περιβάλλον της γονικής διαδικασίας δεν επηρεάζεται από καμία από τις υποδιεργασίες της.
Τα υποκελύφη λειτουργούν με ορισμούς συναρτήσεων, εκτελέσιμα πολλές φορές με διαφορετικές παραμέτρους.