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

Tutorial zur Verwendung des Timeout-Befehls unter Linux

Ein Befehl timeout ist ein Befehlszeilendienstprogramm, das einen bestimmten Befehl ausführt und ihn stoppt, wenn er nach einer bestimmten Zeit noch ausgeführt wird. Mit anderen Worten, der Befehl timeout können Sie den Befehl mit einem von Ihnen angegebenen Timeout ausführen. Der Befehl timeout ist Teil des zentralen GNU-Dienstprogrammpakets, das auf fast allen Linux-Distributionen installiert ist.

Dieser Befehl ist nützlich, wenn Sie einen Befehl ausführen möchten, der keine integrierte Zeitüberschreitungsoption hat, oder einen Prozess nach einer bestimmten Laufzeit stoppen möchten.

In diesem Artikel erklären wir, wie man die Befehle timeout verwendet im Linux-Terminal.

Verwendung des Timeout-Befehls

Die Syntax für den Timeout-Befehl lautet wie folgt:

timeout [OPTIONS] DURATION COMMAND [ARG]…

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

  • s – Sekunden (Sekunden) (dies ist die Standardoption)
  • m – Minuten (Minuten)
  • h – Stunden (Stunden)
  • d – Tage (Tage)

Wenn keine Einheiten verwendet werden, ist der Standardwert Sekunden. Wenn die Dauer auf Null gesetzt wird, wird das zugehörige Timeout deaktiviert.

Befehlsoptionen müssen vor dem Argument angegeben werden.

Hier sind einige grundlegende Beispiele, die zeigen, wie der Befehl timeout verwendet wird :

  • Beenden Sie den Befehl ping nach fünf Sekunden::timeout 5 ping 8.8.8.8
  • Beenden Sie den Befehl nach fünf Minuten:timeout 5m ping 8.8.8.8
  • Beenden Sie den Befehl nach einer Minute und sechs Sekunden:timeout 1.1m ping 8.8.8.8

Wenn Sie einen Befehl ausführen möchten, der Berechtigungen wie tcpdump erfordert , fügen Sie ein Präfix sudo hinzu vor dem Befehl timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Spezielle Signale senden

Wenn kein Signal gegeben wird, ist es timeout verwendet das SIGTERM-Signal für den angegebenen Befehl, wenn das Zeitlimit erreicht ist. Mit dem -s können Sie angeben, welches Signal verwendet werden soll ( --signal ) Option .

Zum Beispiel, um SIGKILL zu senden zu einem Befehl ping Nach einer Minute können Sie den Befehl verwenden:

sudo timeout -s SIGKILL ping 8.8.8.8

Signal kann durch seinen Namen wie SIGKILL angegeben werden oder Zahl 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 den Befehl kill -l :

kill -l

Beenden Sie den hängengebliebenen Prozess

SIGTERM , kann das bei Überschreitung des Timeouts gesendete Standardsignal von einigen Prozessen abgefangen oder ignoriert werden. In dieser Situation läuft der Prozess weiter, nachdem das Beendigungssignal gesendet wurde.

Um sicherzustellen, dass der überwachte Befehl gestoppt wurde, verwenden Sie die Option -k ( --kill-after ) gefolgt von einem Zeitraum. Wenn diese Option verwendet wird, nachdem das angegebene Timeout erreicht ist, wird der Befehl timeout sendet ein Signal SIGKILL an das Programm, das der Eingabe des Benutzers entspricht.

Im folgenden Beispiel ist es timeout führt den Befehl eine Minute lang aus, und wenn er nicht beendet wird, wird er das Programm nach zehn Sekunden „beenden“:

sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”

Der Prozess wird beendet, nachdem das angegebene Zeitlimit erreicht ist, obwohl er feststeckt.

Ausstiegsstatus beibehalten

timeout gibt 124 zurück wenn das Zeitlimit erreicht ist. Ansonsten der Befehl timeout gibt den Exit-Status des verwalteten Befehls zurück.

Um den Beendigungsstatus des Befehls auch bei Erreichen des Timeouts zurückzugeben, verwenden Sie die Option --preserve-status :

timeout --preserve-status 5 ping 8.8.8.8

Befehle im Vordergrund ausführen

Standardmäßig ist es timeout führt einen Befehl im Hintergrund aus. Wenn Sie den Befehl im Vordergrund ausführen möchten, verwenden Sie die Option --foreground :

timeout --foreground 5m ./script.sh

Diese Option ist nützlich, wenn Sie interaktive Befehle ausführen möchten, die eine Benutzereingabe erfordern.

Schlussfolgerung

Befehl ist timeout Wird verwendet, um einen bestimmten Befehl mit einem Zeitlimit nach dem Willen des Benutzers auszuführen.

Befehle timeout sind einfache Befehle, die nicht viele Optionen haben. Normalerweise verwenden Sie einen Befehl timeout mit nur zwei Argumenten, Dauer und dem Befehl, der auftreten wird.


Linux
  1. Eine Einführung in die Verwendung von tcpdump auf der Linux-Befehlszeile

  2. Meistern Sie den Linux-ls-Befehl

  3. Verwenden der Kraft in der Linux-Befehlszeile

  4. Einführung in den Alternativen-Befehl in Linux

  5. Der Befehl locate unter Linux

Der Timer-Befehl in Linux

Führen Sie Hintergrundprozesse in Linux mit dem Screen-Befehl aus

Der Linux-Curl-Befehl

Tutorial zur Verwendung des letzten Befehls im Linux-Terminal

Verwenden des Watch-Befehls unter Linux

Verwenden des tr-Befehls in Linux, um mit Charakteren zu spielen