GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Timeout v Linuxu

timeout je nástroj příkazového řádku, který spouští zadaný příkaz a ukončí jej, pokud je po určité době stále spuštěn. Jinými slovy, timeout umožňuje spustit příkaz s časovým limitem. timeout command je součástí balíku GNU core utilities, který je nainstalován na téměř každé distribuci Linuxu.

Je to užitečné, když chcete spustit příkaz, který nemá vestavěnou možnost časového limitu.

V tomto článku vysvětlíme, jak používat Linux timeout příkaz.

Jak používat timeout Příkaz #

Syntaxe pro timeout příkaz 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 - sekund (výchozí)
  • m - minuty
  • h - hodin
  • d - dny

Pokud není použita žádná jednotka, výchozí nastavení jsou sekundy. Pokud je doba trvání nastavena na nulu, související časový limit je deaktivován.

Možnosti příkazu musí být uvedeny před argumenty.

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

  • Ukončete příkaz po pěti sekundách:

    timeout 5 ping 8.8.8.8
  • Ukončete příkaz po pěti minutách:

    timeout 5m ping 8.8.8.8
  • Ukončete příkaz po jedné minutě a šesti sekundách:

    timeout 1.1m ping 8.8.8.8

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

sudo timeout 300 tcpdump -n -w data.pcap

Odesílání specifického signálu #

Pokud není dán žádný signál, timeout odešle SIGTERM signál do řízeného příkazu, když je dosaženo časového limitu. Pomocí -s můžete určit, který signál se má odeslat (--signal ).

Například pro odeslání SIGKILL na ping po jedné minutě byste použili:

sudo timeout -s SIGKILL ping 8.8.8.8

Signál můžete specifikovat názvem, například SIGKILL , nebo jeho čí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 kill -l příkaz:

kill -l

Zabíjení zaseknutých 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 těchto situacích proces pokračuje v běhu po odeslání signálu ukončení.

Chcete-li se ujistit, že monitorovaný příkaz je ukončen, použijte -k (--kill-after ) možnost následovaná časovým obdobím. Když je tato možnost použita po dosažení daného časového limitu, timeout příkaz odešle SIGKILL signál do spravovaného programu, který nelze zachytit ani ignorovat.

V následujícím příkladu timeout spustí příkaz po dobu jedné minuty, a pokud není ukončen, po deseti sekundách jej ukončí:

sudo timeout -k 10 1m ping 8.8.8.8

timeout -k "./test.sh"

zabit po dosažení daného časového limitu

Zachování stavu ukončení #

timeout vrátí 124 po dosažení časového limitu. V opačném případě vrátí stav ukončení spravovaného příkazu.

Chcete-li vrátit stav ukončení příkazu i po dosažení časového limitu, použijte --preserve-status možnost:

timeout --preserve-status 5 ping 8.8.8.8

Běží v popředí #

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

timeout --foreground 5m ./script.sh

Tato možnost je užitečná, když chcete spustit interaktivní příkaz, který vyžaduje vstup uživatele.

Závěr č.

timeout příkaz se používá ke spuštění daného příkazu s časovým limitem.

timeout je jednoduchý příkaz, který nemá mnoho možností. Obvykle vyvoláte timeout pouze se dvěma argumenty, délkou trvání a spravovaným příkazem.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz

  1. Linux příkaz ifconfig

  2. Linux Time Command

  3. Linux cd příkaz

  1. Příkaz Ping v Linuxu

  2. Linux Watch Command

  3. Příkaz Xargs v Linuxu