У меня есть script, который пытается подключиться к БД с помощью другой программы, а тайм-аут (2.5 мин) программы - длинный. Я хочу добавить эту функциональность в script.
Если требуется подключение дольше, чем через 5 секунд, запустите процесс Else убить процесс сна/убийства.
Проблема, с которой я сталкиваюсь, заключается в том, как bash сообщает, когда процесс убит, потому что процессы находятся в одной оболочке только в фоновом режиме. Есть ли лучший способ сделать это или как заставить замолчать оболочку для команд kill?
DB_CONNECTION_PROGRAM > $CONNECTFILE &
pid=$!
(sleep 5; kill $pid) &
sleep_pid=$!
wait $pid
# If the DB failed to connect after 5 seconds and was killed
status=$? #Kill returns 128+n (fatal error)
if [ $status -gt 128 ]; then
no_connection="ERROR: Timeout while trying to connect to $dbserver"
else # If it connected kill the sleep and any errors collect
kill $sleep_pid
no_connection=`sed -n '/^ERROR:/,$p' $CONNECTFILE`
fi