Ограничитель синхронизации для выполнения команд в Bash / Shell Script

У меня есть сценарий оболочки, который выглядит следующим образом:

echo firstOutput
read -s
command0
command1a
command1b
command1c
echo secondOutput
command2

command1a, command1b, command1c являются отдельными командами, но они могут быть выполнены в произвольном порядке и представляют собой группу в Смысл следующего объяснения.

Теперь я хочу улучшить его, чтобы сценарий продолжался, даже если одна команда зависла. command0 должен быть выполнен первым и у него есть 8 секунд для работы. Если это не произойдет в течение 8 секунд, сценарий продолжит работу command1[a-c], что в совокупности будет работать 5 секунд. Если они не завершаются в течение 5 секунд, вызывается command2. На всякий случай это имеет значение: command2 - последняя команда этого скрипта.

Редактировать: Чтобы уточнить: я знаю, как сделать сценарий, который выполняет команды в максимально допустимое время. Однако это тайм-ауты, и я хочу, чтобы скрипт выполнялся как можно быстрее. Весь сценарий обычно проходит через доли секунды после нажатия Enter (см. Строку read -s).

2
задан 10 April 2015 в 13:53

2 ответа

echo firstOutput
read -s

command0 &
sleep 8

command1a &
command1b &
command1c &
sleep 5

echo secondOutput
command2
3
ответ дан 10 April 2015 в 13:53

Эти timeout команда делает точно, что Вы, кажется, хотите. См. man timeout:

NAME
   timeout - run a command with a time limit

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

DESCRIPTION
   Start COMMAND, and kill it if still running after DURATION.
0
ответ дан 10 April 2015 в 13:53

Другие вопросы по тегам:

Похожие вопросы: