netcat para o resgate ... O Netcat é muito parecido com o telnet, mas com algumas opções extras. Um uso particular neste caso é -z, que apenas verifica se a conexão funciona. Juntamente com a variável timeout, você pode fazer com que o sistema verifique repetidamente se o serviço está escutando.
Eu tenho o ssh habilitado localmente, mas não o telnet.
$ nc -zw10 localhost 22
$ echo $?
0
$ nc -zw10 localhost 23
$ echo $?
1
E para um pouco mais de clareza no teste ... Isto está assumindo o tempo limite de 2 minutos que você mencionou anteriormente. Ele verifica 4 vezes com intervalo de meio minuto cada vez. Os carimbos de data provavelmente seriam melhores, mas isso é um começo.
for i in {1..4}; do
nc -zw30 localhost 22
x=$?
[[ $x -eq 0 ]] && break
done
if [[ $x -eq 0 ]]; then
echo 'Service started successfully' >> ${log}
else
echo 'Service did not start within the specified timeout' >> ${log}
fi
start next service