GNU/Linux >> Znalost Linux >  >> Linux

Kurz použití příkazu Timeout v systému Linux

Příkaz timeout je nástroj příkazového řádku, který provádí zadaný příkaz a zastaví jej, pokud je po určité době stále spuštěn. Jinými slovy, příkaz timeout umožňuje spustit příkaz s časovým limitem, který určíte. Příkaz timeout je součástí základního balíčku GNU utility, který je nainstalován na téměř všech distribucích Linuxu.

Tento příkaz je užitečný, když chcete spustit příkaz, který nemá vestavěnou možnost časového limitu, nebo chcete zastavit proces po určité době běhu.

V tomto článku si vysvětlíme, jak používat příkazy timeout v terminálu Linux.

Jak používat příkaz Timeout

Syntaxe příkazu timeout je následující:

timeout [OPTIONS] DURATION COMMAND [ARG]…

DURATION může být kladné celé číslo nebo číslo s plovoucí desetinnou čárkou následované volitelnou příponou jednotky:

  • s – sekundy (sekundy) (toto je výchozí možnost)
  • m – minuty (minuty)
  • h – hodiny (hodiny)
  • d – dny (dny)

Pokud nejsou použity žádné jednotky, výchozí nastavení jsou sekundy. Pokud je doba trvání nastavena na nulu, související časový limit je deaktivován.

Před argumentem musí být uvedeny možnosti příkazu.

Zde je několik základních příkladů, jak používat příkaz timeout :

  • Zastavte příkaz ping po pěti sekundách::timeout 5 ping 8.8.8.8
  • Zastavte příkaz po pěti minutách:timeout 5m ping 8.8.8.8
  • Zastavte příkaz po jedné minutě a šesti sekundách:timeout 1,1 m ping 8.8.8.8

Pokud chcete spustit příkaz, který vyžaduje oprávnění jako tcpdump , přidejte předponu sudo před příkazem timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Odesílání specifických signálů

Pokud není dán žádný signál, timeout po dosažení časového limitu použije signál SIGTERM na zadaný příkaz. Pomocí -s můžete určit, který signál se má použít ( --signal ) možnost .

Chcete-li například odeslat SIGKILL na příkaz ping po jedné minutě můžete použít příkaz:

sudo timeout -s SIGKILL ping 8.8.8.8

Signál může být specifikován jeho jménem jako SIGKILL nebo číslo jako 9 . Následující příkaz je identický s předchozím:

sudo timeout -s 9 ping 8.8.8.8

Chcete-li získat seznam všech dostupných signálů, použijte příkaz kill -l :

kill -l

Zabijte zaseknutý proces

SIGTERM , výchozí signál odeslaný při překročení časového limitu může být některými procesy zachycen nebo ignorován. V takovém případě proces pokračuje v běhu po odeslání signálu ukončení.

Chcete-li se ujistit, že se monitorovaný příkaz zastavil, použijte volbu -k ( --kill-after ) následuje časové období. Při použití této volby po dosažení daného časového limitu se spustí příkaz timeout vyšle signál SIGKILL na program odpovídající zadání uživatele.

V následujícím příkladu je to timeout spustí příkaz po dobu jedné minuty, a pokud nebude ukončen, po deseti sekundách „zabije“ program:

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

Proces bude po dosažení daného časového limitu ukončen, i když se zasekl.

Zachování stavu ukončení

timeout vrátí 124 po dosažení časového limitu. Jinak příkaz timeout vrátí stav ukončení spravovaného příkazu.

Chcete-li vrátit stav ukončení příkazu, i když vypršel časový limit, použijte volbu --preserve-status :

timeout --preserve-status 5 ping 8.8.8.8

Spouštění příkazů v popředí

Ve výchozím nastavení timeout spustí příkaz na pozadí. Pokud chcete spustit příkaz v popředí, použijte volbu --foreground :

timeout --foreground 5m ./script.sh

Tato možnost je užitečná, když chcete spouštět interaktivní příkazy, které vyžadují vstup uživatele.

Závěr

Příkaz je timeout slouží ke spuštění určitého příkazu s časovým limitem podle vůle uživatele.

Příkazy timeout jsou jednoduché příkazy, které nemají mnoho možností. Obvykle použijete příkaz timeout pouze se dvěma argumenty, trváním a příkazem, který se objeví.


Linux
  1. Úvod do používání tcpdump na příkazovém řádku Linuxu

  2. Zvládněte příkaz Linux ls

  3. Použití síly na příkazovém řádku Linuxu

  1. Úvod do příkazu alternatives v Linuxu

  2. Vyhledejte příkaz v Linuxu

  3. Odstraňte soubor v systému Linux pomocí čísla inodu

  1. Tipy pro použití příkazu top v Linuxu

  2. Pomocí příkazu Linux zdarma

  3. Příkaz Timeout v Linuxu