Sådan køres en kommando med tidsgrænse (timeout) i Linux


Linux leveres med et væld af kommandoer, hver kommando er unik og bruges i specifikke tilfælde. Målet med Linux er at hjælpe dig med at være så hurtig og effektiv som muligt. En egenskab ved en Linux-kommando er tidsbegrænsningen. Du kan indstille en tidsbegrænsning for enhver kommando, du ønsker. Hvis tiden udløber, stopper kommandoen udførelsen.

I denne korte vejledning skal du lære to metoder til, hvordan du kan bruge en tidsbegrænsning i dine kommandoer.

  1. Kør Linux-kommandoer ved hjælp af timeoutværktøjet
  2. Kør Linux-kommandoer ved hjælp af Timelimit-programmet

Linux har et kommandolinjeprogram kaldet en timeout, som giver dig mulighed for at udføre en kommando med en tidsbegrænsning.

Dens syntaks er som følger.

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

For at bruge kommandoen skal du angive en timeoutværdi (i sekunder) med den kommando, du vil køre. For eksempel, for at timeout en ping-kommando efter 5 sekunder, kan du køre følgende kommando.

# timeout 5s ping google.com

Du behøver ikke at specificere (s) efter nummer 5. Kommandoen nedenfor er den samme og fungerer stadig.

# timeout 5 ping google.com

Andre suffikser inkluderer:

  • m repræsenterer minutter
  • h , der repræsenterer timer
  • d , der repræsenterer dage

Nogle gange kan kommandoer fortsætte med at køre, selv efter timeout sender det indledende signal. I sådanne tilfælde kan du bruge indstillingen --kill-after .

Her er syntaksen.

-k, --kill-after=DURATION

Du skal angive en varighed for at give timeout besked, efter hvor lang tid dræbningssignalet skal sendes.

For eksempel afsluttes den viste kommando efter 8 sekunder.

# timeout 8s tail -f /var/log/syslog

Timelimit-programmet kører en given kommando og afslutter derefter processen efter et bestemt tidspunkt ved hjælp af et givet signal. Det sender oprindeligt et advarselssignal, og derefter sender det et kill-signal efter en timeout.

I modsætning til timeout-indstillingen har Timelimit flere muligheder såsom killsig, warnsig, killtime og warntime.

Timelimit kan findes i arkiverne på Debian-baserede systemer, og brug følgende kommando for at installere den.

$ sudo apt install timelimit

For Arch-baserede systemer kan du installere det ved hjælp af AUR-hjælpeprogrammer, fx Pacaur Pacman og Packer.

# Pacman -S timelimit
# pacaur -S timelimit
# packer -S timelimit

Andre Linux-distributioner, du kan downloade timelimit-kilde og installere den manuelt.

Efter installation skal du køre følgende kommando og angive klokkeslættet. I dette eksempel kan du bruge 10 sekunder.

$ timelimit -t10 tail -f /var/log/pacman.log

Bemærk, at hvis du ikke angiver argumenter, bruger Timelimit standardværdierne: warntime = 3600 sekunder, warnsig = 15, killtime = 120 og killsig = 9.

I denne vejledning har du lært, hvordan du kører kommandoer med en tidsbegrænsning i Linux. I gennemgang kan du bruge kommandoen Timeout eller hjælpeprogrammet Timelimit.

Timeout-kommandoen er nem at bruge, men Timelimit-værktøjet er lidt kompliceret, men har flere muligheder. Du kan vælge den mest passende mulighed afhængigt af dine behov.