2013-05-23 14 views
6

Piszę skrypt i chciałbym wiedzieć, jak poprosić jedno z poleceń, aby opuściło po kilku sekundach. Na przykład załóżmy, że mój skrypt uruchamia w nim 2 polecenia aplikacji.Jak wyjść z polecenia po n sekundach?

#!/bin/bash 

for i in `cat servers` 
do 
<command 1> $i >> Output_file #Consistency command 
<command 2> $i >> Output_file #Communication check 
done 

Polecenia te mają sprawdzić spójność & komunikację z/do aplikacji. Chcę wiedzieć, w jaki sposób upewnić się, że polecenie 1 & 2 działa przez kilka sekund, a jeśli nie ma odpowiedzi od konkretnego hosta, przejdź do następnego polecenia.

Dzięki

+1

Wydaje się, że patrząc na to: [Limit czasu polecenia w bash bez zbędnej zwłoki] (http://stackoverflow.com/questions/687948/timeout- a-command-in-bash-without-niepotrzebne-opóźnienie) – devnull

+0

Spojrzałem na to, czy nie jest łatwiejszy sposób? Nie chcę, aby mój malutki scenariusz był zbyt złożony! :) – Marcos

+0

jest to przydatne dla polecenia 'display' imagemagick, które nie gra ładnie z xargs. –

Odpowiedz

10

bash coreutils ma „polecenie timeout`.

Z instrukcji:

OPIS

komenda startu i zabić go, czy nadal działa po numerze sekund. SUFFIX może być "s" dla sekund (domyślnie), "m" dla minut, "h" dla godzin lub "d" dla dni.

na przykład:

timeout 5 sleep 6

+0

Próbuję dla rpcinfo na solaris ... "timeout 5 rpcinfo -p nazwa_serwera" daje "polecenie nie znaleziono", ale jest tam wpis strony podręcznika. – Marcos

+1

'timeout' nie jest wbudowanym bash. Jest dostarczany przez coreutils GNU. – devnull

+0

Więc jak z tego korzystać? – Marcos