Περιμένετε εντολή στο Linux

Wait Command Linux



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

Η τιμή κατάστασης εξόδου της εντολής αναμονής εξαρτάται από την εντολή που υποδεικνύεται από τον τελευταίο τελεστή που καθορίστηκε. Όταν οποιαδήποτε διαδικασία τερματιστεί ασυνήθιστα, τότε η κατάσταση εξόδου θα είναι μεγαλύτερη από 128 και θα είναι διαφορετική από τις τιμές κατάστασης εξόδου άλλων εντολών. Περίμενε η εντολή εξέρχεται με την τιμή 0 όταν καλεί χωρίς τελεστέους και όλα τα αναγνωριστικά διεργασίας είναι γνωστά από το τρέχον κέλυφος έχουν τερματιστεί. Εάν η εντολή αναμονής εντοπίσει οποιοδήποτε σφάλμα, τότε επιστρέφει οποιαδήποτε τιμή από το 1 στο 126. Εάν το τελευταίο αναγνωριστικό διεργασίας είναι άγνωστο, τότε η εντολή αναμονής εξέρχεται με την τιμή 127. Ο τρόπος χρήσης της εντολής αναμονής στο Linux εμφανίζεται σε αυτό το σεμινάριο.







Παράδειγμα-1: Χρήση της εντολής αναμονής για πολλές διαδικασίες

Μετά την εκτέλεση του παρακάτω σεναρίου, δύο διαδικασίες θα εκτελεστούν στο παρασκήνιο και το αναγνωριστικό διεργασίας της πρώτης εντολής echo θα αποθηκευτεί στη μεταβλητή $ process_id. Όταν η εντολή αναμονής εκτελείται με $ process_id τότε η επόμενη εντολή θα περιμένει για την ολοκλήρωση της εργασίας της πρώτης εντολής echo. Η δεύτερη εντολή αναμονής χρησιμοποιείται με « $! »Και αυτό υποδεικνύει το αναγνωριστικό διεργασίας της τελευταίας τρέχουσας διαδικασίας. ' $? ’Χρησιμοποιείται για την ανάγνωση της τιμής κατάστασης της εντολής αναμονής.



#!/bin/bash
πέταξε έξω 'Δοκιμή εντολής αναμονής 1' &
process_id=$!
πέταξε έξω «Δοκιμή εντολής αναμονής2» &
Περίμενε $ process_id
πέταξε έξωΔουλειά1αποχώρησε με την κατάσταση$?
Περίμενε $!
πέταξε έξωΔουλειά2αποχώρησε με την κατάσταση$?

Παραγωγή:



$κτυπώ δυνατάαναμονή1.σ





Παράδειγμα-2: Δοκιμάστε την εντολή αναμονής μετά τη χρήση της εντολής kill

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

#!/bin/bash
πέταξε έξω 'Δοκιμή εντολής αναμονής'
ύπνος είκοσι &
pid=$!
σκοτώνω $ pid
Περίμενε $ pid
πέταξε έξω $ pidτερματίστηκε.

Παραγωγή:



$κτυπώ δυνατάπερίμενε2.σ

Παράδειγμα-3: Ελέγξτε την τιμή κατάστασης εξόδου

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

#!/bin/bash
λειτουργίαέλεγχος()
{
πέταξε έξω «Κοιμηθείτε για $ 1 δευτερόλεπτα»
ύπνος $ 1
έξοδος $ 2
}
έλεγχος$ 1 $ 2 &
σι=$!
πέταξε έξω «Έλεγχος της κατάστασης»
Περίμενε $ β && πέταξε έξωΕντάξει|| πέταξε έξωΟΧΙ ΕΝΤΑΞΕΙ

Παραγωγή:

$κτυπώ δυνατάπερίμενε3.σ3 0
$κτυπώ δυνατάπερίμενε3.σ3 5

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