Запустите команду в течение указанного времени, а затем прервите, если время превышает

47

Я хочу знать, как я могу выполнить команду в течение определенного времени, скажем, одной минуты, и если она не завершит выполнение, я смогу остановить ее.

Нихилу
источник

Ответы:

62

Используйте timeout:

NAME
       timeout - run a command with a time limit

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

(На всякий случай, если у вас нет этой команды или вам нужно быть совместимым с очень очень старыми оболочками и иметь несколько других совершенно специфических требований… посмотрите на этот вопрос ;-))

Стефан Хименес
источник
1
Отлично, спасибо за ссылку на этот вопрос. У меня не было тайм-аута в моей системе, но у меня есть сейчас. Кстати, входит ли таймаут в большинство дистрибутивов Linux?
Нихил
1
Довольно круто. Вы можете сделать что-то вроде этого: for i in `seq 0 3`; do timeout 2 ethtool -p eth$i; done;мигать светодиодами на
сетевых картах
1
Какая сексуальная команда. Спасибо за указание, не знал об этом.
Бруно