GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Timeout-Befehl in Linux

timeout ist ein Befehlszeilendienstprogramm, das einen bestimmten Befehl ausführt und ihn beendet, wenn er nach einer bestimmten Zeit noch ausgeführt wird. Mit anderen Worten, timeout ermöglicht es Ihnen, einen Befehl mit einem Zeitlimit auszuführen. Das timeout Der Befehl ist Teil des GNU Core Utilities-Pakets, das auf fast jeder Linux-Distribution installiert ist.

Dies ist praktisch, wenn Sie einen Befehl ausführen möchten, der keine integrierte Zeitüberschreitungsoption hat.

In diesem Artikel erklären wir, wie Sie das Linux-timeout verwenden Befehl.

So verwenden Sie das timeout Befehl #

Die Syntax für das timeout Befehl lautet wie folgt:

timeout [OPTIONS] DURATION COMMAND [ARG]…

Die DURATION kann eine positive Ganzzahl oder eine Fließkommazahl sein, gefolgt von einem optionalen Einheitensuffix:

  • s - Sekunden (Standard)
  • m - Minuten
  • h - Stunden
  • d - Tage

Wenn keine Einheit verwendet wird, werden standardmäßig Sekunden verwendet. Wenn die Dauer auf Null gesetzt wird, wird das zugehörige Timeout deaktiviert.

Die Befehlsoptionen müssen vor den Argumenten angegeben werden.

Hier sind ein paar grundlegende Beispiele, die zeigen, wie man timeout verwendet Befehl:

  • Befehl nach fünf Sekunden beenden:

    timeout 5 ping 8.8.8.8
  • Befehl nach fünf Minuten beenden:

    timeout 5m ping 8.8.8.8
  • Befehl nach einer Minute und sechs Sekunden beenden:

    timeout 1.1m ping 8.8.8.8

Wenn Sie einen Befehl ausführen möchten, der erhöhte Berechtigungen erfordert, wie z. B. tcpdump , stellen Sie sudo voran vor timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Spezielles Signal senden #

Wenn kein Signal gegeben wird, timeout sendet den SIGTERM Signal an den verwalteten Befehl, wenn das Zeitlimit erreicht ist. Mit dem -s können Sie angeben, welches Signal gesendet werden soll (--signal )-Option.

Zum Beispiel, um SIGKILL zu senden zum ping Befehl nach einer Minute würden Sie verwenden:

sudo timeout -s SIGKILL ping 8.8.8.8

Sie können das Signal anhand des Namens angeben, z. B. SIGKILL , oder seine Nummer wie 9 . Der folgende Befehl ist identisch mit dem vorherigen:

sudo timeout -s 9 ping 8.8.8.8

Um eine Liste aller verfügbaren Signale zu erhalten, verwenden Sie kill -l Befehl:

kill -l

Festgefahrene Prozesse beenden #

SIGTERM , das Standardsignal, das gesendet wird, wenn das Zeitlimit überschritten wird, kann von einigen Prozessen abgefangen oder ignoriert werden. In diesen Situationen läuft der Prozess weiter, nachdem das Beendigungssignal gesendet wurde.

Um sicherzustellen, dass der überwachte Befehl beendet wird, verwenden Sie -k (--kill-after ) Option gefolgt von einem Zeitraum. Wenn diese Option verwendet wird, nachdem das angegebene Zeitlimit erreicht ist, wird das timeout Befehl sendet den SIGKILL Signal an das verwaltete Programm, das nicht abgefangen oder ignoriert werden kann.

Im folgenden Beispiel timeout führt den Befehl eine Minute lang aus, und wenn er nicht beendet wird, beendet er ihn nach zehn Sekunden:

sudo timeout -k 10 1m ping 8.8.8.8

timeout -k „./test.sh“

getötet, nachdem das angegebene Zeitlimit erreicht ist

Beibehalten des Exit-Status #

timeout gibt 124 zurück wenn das Zeitlimit erreicht ist. Andernfalls wird der Exit-Status des verwalteten Befehls zurückgegeben.

Verwenden Sie --preserve-status, um den Beendigungsstatus des Befehls auch dann zurückzugeben, wenn das Zeitlimit erreicht ist Möglichkeit:

timeout --preserve-status 5 ping 8.8.8.8

Im Vordergrund laufen #

Standardmäßig timeout führt den verwalteten Befehl im Hintergrund aus. Wenn Sie den Befehl im Vordergrund ausführen möchten, verwenden Sie --foreground Möglichkeit:

timeout --foreground 5m ./script.sh

Diese Option ist nützlich, wenn Sie einen interaktiven Befehl ausführen möchten, der eine Benutzereingabe erfordert.

Schlussfolgerung #

Das timeout Befehl wird verwendet, um einen bestimmten Befehl mit einem Zeitlimit auszuführen.

timeout ist ein einfacher Befehl, der nicht viele Optionen hat. Normalerweise rufen Sie timeout auf nur mit zwei Argumenten, der Dauer und dem verwalteten Befehl.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Linux ifconfig-Befehl

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

Kostenloser Befehl unter Linux

Sudo-Befehl unter Linux

Suchen Sie Command in Linux

W-Befehl unter Linux

Bei Befehl unter Linux

Df-Befehl unter Linux