Jak przekroczyć limit czasu polecenia w Bash bez niepotrzebnej zwłoki

Jak Przekroczyc Limit Czasu Polecenia W Bash Bez Niepotrzebnej Zwloki



W Bash czasami może być konieczne uruchomienie polecenia, którego wykonanie zajmuje dużo czasu i możesz nie chcieć czekać na jego zakończenie w nieskończoność. Jednym z rozwiązań tego problemu jest użycie polecenia timeout, które ogranicza czas, przez jaki polecenie może działać. W tym artykule omówimy, jak przekroczyć limit czasu polecenia w Bash bez zbędnej zwłoki.

Przekroczono limit czasu polecenia w Bash

Aby przekroczyć limit czasu polecenia w Bash, możemy użyć metody 'koniec czasu' Komenda. Polecenie „timeout” nie jest domyślnie dostępne we wszystkich systemach, ale można je zainstalować za pomocą menedżera pakietów w większości dystrybucji Linuksa, oto składnia polecenia „timeout”:







koniec czasu [ OPCJA ] POLECENIE CZAS TRWANIA [ ARG ]


Tutaj „OPCJA” jest opcjonalnym argumentem, który określa zachowanie polecenia przekroczenia limitu czasu, „CZAS TRWANIA” to limit czasu na uruchomienie polecenia, a „COMMAND [ARG]” to polecenie i jego argumenty, które chcemy uruchomić.



Na przykład, powiedzmy, że chcemy uruchomić polecenie „uśpienia” na pięć sekund, ale chcemy przekroczyć limit czasu polecenia po trzech sekundach, a oto przykładowy skrypt powłoki:



#!/bin/bash
Echo „Uruchamianie polecenia uśpienia z limitem czasu wynoszącym 3 sekundy…”
limit czasu 3s spać 5s
Echo „Komenda uśpienia zakończona”.


Tutaj określiłem czas trwania limitu czasu na 3 sekundy, a czas trwania polecenia „uśpienia” na 5 sekund. Polecenie „timeout” zatrzyma polecenie „uśpienia” po 3 sekundach, mimo że polecenie „uśpienia” normalnie działałoby przez 5 sekund.






Aby uniknąć niepotrzebnego opóźnienia podczas korzystania z polecenia „timeout”, możemy użyć opcji „-k”. Opcja „-k” określa sygnał, który zostanie wysłany do polecenia, jeśli przekroczy ono limit czasu. Ten sygnał spowoduje natychmiastowe zakończenie polecenia, zamiast czekać, aż zakończy się z wdziękiem.

Na przykład, powiedzmy, że chcemy uruchomić polecenie „uśpienia” na pięć sekund, ale chcemy przekroczyć limit czasu polecenia po trzech sekundach i wysłać sygnał SIGINT, jeśli przekroczy limit czasu. Możemy to zrobić, uruchamiając następujące polecenie:



#!/bin/bash
Echo „Uruchomienie polecenia uśpienia z limitem czasu 3 sekund i sygnałem SIGINT po 2 sekundach”
limit czasu -k 2s 3s uśpienie 5s
Echo '
Spać Komenda skończone. '


Tutaj określiłem czas oczekiwania na 3 sekundy, a sygnał, który ma zostać wysłany jako SIGINT, jeśli przekroczy limit czasu. Opcja „-k 2s” określa, że ​​sygnał SIGINT powinien zostać wysłany po dwóch sekundach limitu czasu.

Wniosek

Przekroczenie limitu czasu polecenia w Bash to przydatne narzędzie, które może pomóc wydajniej uruchamiać polecenia i zapobiegać niepotrzebnym opóźnieniom. Używając polecenia „timeout” i opcji „-k”, możesz ograniczyć czas działania polecenia i wysłać sygnał do jego natychmiastowego zakończenia, jeśli przekroczy limit czasu. Pomoże Ci to zaoszczędzić czas i wydajniej uruchamiać skrypty.