So pausieren Sie ein Bash-Skript mit dem Linux-Schlafbefehl

Der Befehl sleep lässt Ihren Linux-Computer nichts tun. Kontraintuitiv vielleicht, aber manchmal ist eine Zeit der Inaktivität genau das Richtige. In diesem Artikel erfahren Sie, wie Sie diesen Bash-Shell-Befehl effektiv verwenden.

Schlaf zu benutzen ist einfach. Geben Sie in der Befehlszeile sleep, ein Leerzeichen, eine Zahl ein und drücken Sie dann die Eingabetaste.

sleep 5

Der Cursor verschwindet für fünf Sekunden und kehrt dann zurück. Was ist passiert? Wenn Sie sleep in der Befehlszeile verwenden, weist Bash die Verarbeitung für die von Ihnen angegebene Dauer an. In unserem Beispiel waren dies fünf Sekunden.

Wir können die Schlafdauer in Tagen, Stunden und Minuten sowie in Sekunden weitergeben. Fügen Sie dazu ein Suffix von entweder d, h, m oder s mit der Dauer hinzu. Um den Schlaf für einen Tag, vier Stunden, sieben Minuten und fünf Sekunden anzuhalten, verwenden Sie einen Befehl wie diesen:

sleep 1d 4h 7m 5s

Das Suffix s (für Sekunden) ist optional. Ohne Suffix behandelt sleep jede Dauer als Sekunden. Angenommen, Sie möchten fünf Minuten und zwanzig Sekunden lang eine Schlafpause einlegen. Ein korrektes Format dieses Befehls ist:

sleep 5m 20

Wenn Sie vergessen, das Suffix m für die Minutendauer anzugeben, weisen Sie den Schlaf an, für fünf Sekunden und dann noch einmal für zwanzig Sekunden zu pausieren. Der Schlaf pausiert also für 25 Sekunden.

  So richten Sie einen uTorrent-Server unter Linux ein

Bei vielen Befehlen müssen Sie Parameter in einer bestimmten Reihenfolge angeben, aber der Schlaf verzeiht sehr. Sie können sie in beliebiger Reihenfolge bereitstellen und der Schlaf macht Sinn. Sie können auch eine Gleitkommazahl als Parameter angeben. 0,5h ist beispielsweise eine gültige Methode, um anzugeben, dass der Schlaf eine halbe Stunde pausieren soll.

Alle der folgenden (zunehmend exzentrischen) Befehle weisen den Schlaf an, für 10 Sekunden zu pausieren.

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

Verwenden des Ruhezustands zum Anhalten vor einem Befehl

Der sleep-Befehl kann verwendet werden, um eine Pause vor der Ausführung eines Befehls zu geben. Dieser Befehl würde 15 Sekunden lang pausieren und dann einen Piepton geben.

sleep 15 && echo -en ' 07'

Verwenden des Energiesparmodus, um zwischen zwei Befehlen zu pausieren

Sie können sleep verwenden, um zwischen zwei Befehlen eine Pause einzulegen. Dieser Befehl würde die Dateien in Ihrem Documents-Verzeichnis auflisten, für fünf Sekunden anhalten und dann das aktuelle Arbeitsverzeichnis in Ihr Home-Verzeichnis ändern:

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

Verwenden des Energiesparmodus, um die Ausführung eines Skripts anzuhalten

Sie können den sleep-Befehl in Shell-Skripten verwenden, um die Ausführung des Skripts für einen bestimmten Zeitraum zu unterbrechen. Normalerweise würden Sie dies tun, um einem Prozess genügend Zeit zu geben, damit er abgeschlossen werden kann, bevor das Skript seine Verarbeitung fortsetzt. Sie können es auch verwenden, um die Rate der Anforderungen eines Skripts an eine andere Ressource zu begrenzen.

  So verwenden Sie den stat-Befehl unter Linux

Um genau das zu demonstrieren, ist hier ein Skript, das mithilfe von curl einen Google-Webdienst aufruft. Wenn Sie den Webservice mit dem ISBN Nummer eines Buches, antwortet es mit einem Dump der JSON-Daten zu diesem Buch. Wir können diese Daten analysieren, indem wir sie durch das Dienstprogramm jq übergeben, um den Titel des Buches abzurufen. Damit das Skript den Webdienst nicht belastet, schläft es zwischen den Webanfragen eine Sekunde lang.

Erstellen Sie eine Datei mit dem folgenden Text und speichern Sie sie als 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."

Geben Sie den folgenden Befehl ein, um die Ausführungsberechtigungen festzulegen und das Skript ausführbar zu machen.

chmod +x check_book.sh

Das Skript erfordert die Dienstprogramme curl und jq. Verwenden Sie apt-get, um diese Pakete auf Ihrem System zu installieren, wenn Sie Ubuntu oder eine andere Debian-basierte Distribution verwenden. Verwenden Sie bei anderen Linux-Distributionen stattdessen das Paketverwaltungstool Ihrer Linux-Distribution.

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

Erstellen Sie eine Textdatei mit den folgenden Nummern und speichern Sie sie als books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Führen Sie das Skript check_book.sh aus und übergeben Sie die Datei books.txt als Parameter.

./check_book.sh books.txt

Die Anfragen werden im Sekundentakt an den Webservice von Google gestellt. Der Titel des Buches erscheint kurz nach der Abfrage jeder ISBN-Nummer.

  So deaktivieren Sie die UFW-Firewall unter Linux

Das ist alles, was es zum Schlafen gibt. Das Innenleben des Skripts check_book.sh würde den Rahmen dieses Artikels sprengen. Das Skript wurde ausschließlich ausgewählt, um eine gültige Verwendung des Befehls sleep zu veranschaulichen. Wenn Sie mehr über die beiden Hauptkomponenten des Skripts erfahren möchten, lesen Sie den curl Projektseite und der jq Online-Handbuch.