Linux Timeout Befehl erklärt für Anfänger (mit Beispielen)

Manchmal, wenn Sie einen Befehl unter Linux ausführen, möchten Sie ihn vielleicht für eine bestimmte Zeit ausführen. Es gibt ein Kommandozeilenprogramm – Timeout – das speziell für diesen Zweck entwickelt wurde. In diesem Artikel werden wir die Grundlagen dieses Befehls anhand einiger leicht verständlicher Beispiele diskutieren.

Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Tutorial auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.

Linux Timeout-Befehl

Wie der Name schon sagt, ermöglicht der Timeout-Befehl unter Linux die Ausführung eines Befehls mit einem Zeitlimit. Folgendes ist seine Syntax:

timeout [OPTION] DURATION COMMAND [ARG]...

Und so erklärt es die Man Page des Tools:

timeout - run a command with a time limit
Start COMMAND, and kill it if still running after DURATION

Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln sollen, wie dieses Tool funktioniert.

Q1. Wie kann man den Timeout-Befehl verwenden?

Die grundlegende Bedienung ist ziemlich einfach – führen Sie einfach ‚timeout‘ aus, indem Sie in der Eingabe einen Timeout-Wert (in Sekunden betrachtet) sowie den Befehl, den Sie ausführen möchten, angeben.

Wenn Sie beispielsweise einen Ping-Befehl nach 5 Sekunden ausfallen lassen möchten, können Sie in diesem Fall wie folgt vorgehen.

timeout 5 ping google.com

Q2. Wie erhält man den Exit-Status des Befehls in der Ausgabe?

Wenn der Timeout-Befehl erfolgreich ist, gibt er standardmäßig 124 als Ausgangsstatus zurück. Nachfolgend ein Beispiel:

Im ersten Fall ließ ich den Timeout-Befehl erfolgreich laufen, und wie Sie sehen können, war der Ausgangsstatus 124. Während des zweiten Laufs habe ich jedoch den Befehl mit Strg+C gewaltsam beendet, und in diesem Fall war der Ausgangsstatus 0.

Wenn Sie jedoch möchten, dass Timeout den Status des Eingabekommandos auch bei erfolgreichem Timeout zurückgibt, müssen Sie die Befehlszeilenoption –preserve-status verwenden.

Zum Beispiel:

timeout --preserve-status 5 ping google.com

Q3. Wie kann man die Signal-Timeout-Sends ändern?

Es ist sinnlos zu erraten, dass Timeout funktioniert, indem ein Signal an den Eingangsbefehl gesendet wird, so dass dieser die Ausführung bis zum Ablauf der Frist stoppt. Standardmäßig wird sie vom BefehlSIGTERM verwendet.

Wenn Sie möchten, können Sie jedoch das Signal ändern, das per Timeout gesendet wird. Dazu müssen Sie die Befehlszeilenoption -s verwenden und als Eingang das Signal angeben, das das Timeout senden soll.

Zum Beispiel:

timeout -s SIGKILL [COMMAND]

Um eine Liste der verfügbaren Signale zu erhalten, die Sie senden können, führen Sie den folgenden Befehl aus:

kill -l

Q4. Wie kann man sicherstellen, dass Timeout automatisch das KILL-Signal sendet?

Manchmal kann es vorkommen, dass Sie auf einen Eingabeauftrag stoßen, der auch dann weiterläuft, wenn der Timeout das erste Signal sendet. Für solche Fälle bietet Timeout die Option‘–kill-after‘.

So erklärt es die Manualseite:

-k, --kill-after=DURATION

also send a KILL signal if COMMAND is still running

this long after the initial signal was sent

Wie Sie also sehen können, müssen Sie eine Dauer angeben, um Timeout zu erfahren, nach wie viel Zeit dieses Signal gesendet werden soll.

Fazit

Abhängig von der Art der Arbeit, die Sie ausführen, kann sich der Timeout-Befehl als sehr hilfreich erweisen. Hier, in diesem Tutorial, haben wir die meisten der Optionen, die dieses Tool bietet, diskutiert. Sobald du damit fertig bist, diese zu üben, kannst du mehr über Timeout erfahren, indem du zu dessen Man Page gehst.

Das könnte Dich auch interessieren …