Πώς να θέσετε σε παύση ένα σενάριο Bash με την εντολή Sleep Linux

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

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

sleep 5

Ο κέρσορας θα εξαφανιστεί για πέντε δευτερόλεπτα και μετά θα επιστρέψει. Τι συνέβη? Η χρήση αναστολής λειτουργίας στη γραμμή εντολών δίνει εντολή στο Bash να αναστείλει την επεξεργασία για τη διάρκεια που παρείχατε. Στο παράδειγμά μας αυτό ήταν πέντε δευτερόλεπτα.

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

sleep 1d 4h 7m 5s

Το επίθημα s (για δευτερόλεπτα) είναι προαιρετικό. Χωρίς επίθημα, ο ύπνος θα αντιμετωπίζει οποιαδήποτε διάρκεια ως δευτερόλεπτα. Ας υποθέσουμε ότι θέλετε να κάνετε παύση ύπνου για πέντε λεπτά και είκοσι δευτερόλεπτα. Μια σωστή μορφή αυτής της εντολής είναι:

sleep 5m 20

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

  Ποια είναι η διαφορά μεταξύ Linux και Unix;

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

Όλες οι ακόλουθες (ολοένα και πιο εκκεντρικές) εντολές λένε στον ύπνο να σταματήσει για 10 δευτερόλεπτα.

sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m

Χρήση αναστολής λειτουργίας για παύση πριν από μια εντολή

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

sleep 15 && echo -en ' 07'

Χρήση αναστολής λειτουργίας για παύση μεταξύ δύο εντολών

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

ls -R ~/Documents && sleep 5 && cd ~

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

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

  Πώς να συγχρονίσετε το Google Drive σε Linux με το OverGrive

Για να αποδείξουμε ακριβώς αυτό, εδώ είναι ένα σενάριο που καλεί σε μια υπηρεσία ιστού Google χρησιμοποιώντας curl. Όταν ρωτάτε την υπηρεσία web με το ISBN τον αριθμό ενός βιβλίου, ανταποκρίνεται με μια ένδειξη δεδομένων JSON σχετικά με αυτό το βιβλίο. Μπορούμε να αναλύσουμε αυτά τα δεδομένα περνώντας τα από το βοηθητικό πρόγραμμα jq για να ανακτήσουμε τον τίτλο του βιβλίου. Για να μην πιέζει το σενάριο την υπηρεσία ιστού, αδράνει για ένα δευτερόλεπτο μεταξύ των αιτημάτων Ιστού.

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

#!/bin/bash

for book in `cat $1`
do
 echo $book":"
 curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title'
 echo ""
 sleep 1
done

echo "All done."

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

chmod +x check_book.sh

Το σενάριο απαιτεί τα βοηθητικά προγράμματα curl και jq. Χρησιμοποιήστε το apt-get για να εγκαταστήσετε αυτά τα πακέτα στο σύστημά σας εάν χρησιμοποιείτε Ubuntu ή άλλη διανομή που βασίζεται στο Debian. Σε άλλες διανομές Linux, χρησιμοποιήστε αντί αυτού το εργαλείο διαχείρισης πακέτων της διανομής σας Linux.

sudo apt-get install curl
sudo apt-get install jq

Δημιουργήστε ένα αρχείο κειμένου που περιέχει τους παρακάτω αριθμούς και αποθηκεύστε το ως books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Εκτελέστε το σενάριο check_book.sh και περάστε το αρχείο books.txt ως παράμετρο.

./check_book.sh books.txt

Τα αιτήματα υποβάλλονται στην υπηρεσία ιστού Google ανά διαστήματα ενός δευτερολέπτου. Ο τίτλος του βιβλίου θα εμφανίζεται λίγο μετά την αναζήτηση κάθε αριθμού ISBN.

  Τρόπος χρήσης SUID, SGID και Sticky Bits στο Linux

Αυτό είναι το μόνο που υπάρχει για να κοιμηθείς. Οι εσωτερικές λειτουργίες του σεναρίου check_book.sh είναι πέρα ​​από το πεδίο εφαρμογής αυτού του άρθρου. Το σενάριο επιλέχθηκε καθαρά για να απεικονίσει μια έγκυρη χρήση της εντολής ύπνου. Αν θέλετε να διαβάσετε περισσότερα για τα δύο βασικά στοιχεία του σεναρίου, ανατρέξτε στο curl σελίδα του έργου και το jq on-line εγχειρίδιο.