Uruchom polecenie na określony czas, a następnie przerwij, jeśli czas przekroczy

47

Chcę wiedzieć, jak mogę uruchomić polecenie na określony czas, powiedzmy, jedną minutę, a jeśli to nie zakończy wykonania, powinienem być w stanie go zatrzymać.

nikhil
źródło

Odpowiedzi:

62

Użyj timeout:

NAME
       timeout - run a command with a time limit

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

(Na wszelki wypadek, jeśli nie masz tego polecenia lub musisz być kompatybilny z bardzo bardzo starymi powłokami i masz kilka innych ściśle określonych wymagań… spójrz na to pytanie ;-))

Stéphane Gimenez
źródło
1
Doskonale, dziękuję za link do tego pytania. Nie miałem limitu czasu w moim systemie, ale teraz mam. Na marginesie, czy limit czasu jest powiązany z większością dystrybucji Linuksa?
nikhil
1
Całkiem fajne. możesz zrobić coś takiego: for i in `seq 0 3`; do timeout 2 ethtool -p eth$i; done;mrugać diodami LED na
kartach sieciowych
1
Co za seksowne polecenie. Dzięki za wskazanie tego, nie byłem tego świadomy.
Bruno Bieri,