2013-05-23 3 views
6

Я пишу сценарий и хотел бы знать, как попросить одну из команд выйти через несколько секунд. Напр. предположим, что мой скрипт запускает в нем 2 команды приложения.Как выйти из команды через n секунд?

#!/bin/bash 

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

Эти команды для проверки согласованности & связи в/из приложения. Я хочу знать, как я могу убедиться, что команда 1 & 2 работает всего несколько секунд, и если от конкретного хоста нет ответа, переходите к следующей команде.

Благодаря

+1

Вы, кажется, ищет для этого: [Тайм-аут команды в Баш без неоправданной задержки] (http://stackoverflow.com/questions/687948/timeout- a-command-in-bash-without-needecessary-delay) – devnull

+0

Я посмотрел @, что, нет ли более простого способа? Я не хочу, чтобы мой крошечный сценарий был слишком сложным! :) – Marcos

+0

это полезно для команды 'display' от imagemagick, которая не играет хорошо с xargs. –

ответ

10

Баш Coreutils получил «timeout` команду.

Из инструкции:

ОПИСАНИЕ

Start COMMAND, и убить его, если все еще работает после ЧИСЛО секунд. SUFFIX может быть «s» в секундах (по умолчанию), «m» для минут, «h» в течение часов или «d» в течение нескольких дней.

, например:

timeout 5 sleep 6

+0

Я пытаюсь использовать rpcinfo для solaris ... «timeout 5 rpcinfo -p имя_сервера», он дает команду «не найден», но для нее есть запись в man-странице. – Marcos

+1

'timeout' не является встроенным bash. Он предоставляется GNU coreutils. – devnull

+0

Итак, как мне его использовать? – Marcos

Смежные вопросы