Chcę uruchomić skrypt powłoki, który ma w sobie pętlę i może trwać wiecznie, czego nie chcę. Więc muszę wprowadzić limit czasu dla całego skryptu.
Jak mogę wprowadzić limit czasu dla całego skryptu powłoki w SuSE?
shell-script
timeout
Radek
źródło
źródło
timeout
lubexpect
)Odpowiedzi:
Jeśli GNU
timeout
nie jest dostępne, możesz użyćexpect
(Mac OS X, BSD, ... zwykle nie mają domyślnie narzędzi i narzędzi GNU).Edytuj przykład:
źródło
timeout
wynosi 124, w przeciwnym razie jest to status powrotu polecenia (jest to wspomniane w odpowiedzi Tima Kennedy'ego).Dziękuję za wyjaśnienie.
Najłatwiejszym sposobem na osiągnięcie tego, czego szukasz, jest uruchomienie skryptu za pomocą pętli w opakowaniu, takiej jak
timeout
polecenie z pakietu GNU Coreutils.W końcu będzie to o wiele łatwiejsze niż napisanie własnej funkcji limitu czasu, której powłoki zwykle nie mają wbudowanego.
źródło
gtimeout
w mojej konfiguracji (OSX).Uruchom proces nadzoru z poziomu skryptu, aby zabić jego rodzica, jeśli działa zbyt długo. Przykład:
Ten skrypt zostanie zakończony przez strażnika po pięciu sekundach.
źródło
Jest też
cratimeout
Martin Cracauer.źródło
źródło