Bash: ожидание с тайм-аутом

В сценарии Bash я хотел бы сделать что-то вроде:

app1 &
pidApp1=$!
app2 &
pidApp2=$1

timeout 60 wait $pidApp1 $pidApp2
kill -9 $pidApp1 $pidApp2

Т.е., запустите два приложения в фоновом режиме и дайте им 60 секунд на выполнение своей работы. Затем, если они не закончат в течение этого интервала, убейте их.

К сожалению, это не работает, так как timeout— это исполняемый файл, а wait— это команда оболочки. Я попытался изменить его на:

timeout 60 bash -c wait $pidApp1 $pidApp2

, но это все еще не работает, так как ожиданиеможет быть вызвано только для PID, запущенного в той же оболочке.

Есть идеи?

45
задан Alfe 5 August 2015 в 08:28
поделиться