
eu instalei o cluster MySQL NDB. São necessários cerca de 2 a 3 minutos para sincronizar o banco de dados entre os nós do cluster. Assim que a sincronização terminar, posso iniciar outro aplicativo chamado heartbeat. Portanto, em meu script de shell, quero verificar a disponibilidade do serviço ndbd o tempo todo. Assim que este serviço estiver disponível, preciso iniciar o aplicativo de pulsação em cinco minutos. Você poderia me ajudar a escrever o roteiro.
Responder1
Você também pode tentar usar o comando interno "wait" do bash.
De "man bash"
espere [n]
Aguarde o processo especificado e retorne seu status de encerramento. n pode ser um ID de processo ou uma especificação de trabalho; se uma especificação de trabalho for fornecida, todos os processos no pipeline desse trabalho serão aguardados. Se n não for fornecido, todos os processos filhos atualmente ativos serão aguardados e o status de retorno será zero. Se n especificar um processo ou trabalho inexistente, o status de retorno será 127. Caso contrário, o status de retorno será o status de saída do último processo ou trabalho esperado.
Seu script poderia ser algo assim:
# send to background
./ndb_startup_script &
# wait on pid of ndb_startup_script
wait $!
if [ $? -eq 0 ] # assuming 0 is ret code for successful run
then
./heartbeat_startup_script
else
# extra stuff to handle error
fi
Responder2
O que eu gostaria é que o script ndb execute outro script, para que ele não espere os 5 minutos terminarem e bloqueie o início de outros serviços.
## whatever starts ndb
exec heartbeat_startup_script
Coloquei um sleep 300 (segundos) aqui, porque você especificou 5 minutos, mas verificar se a sincronização do ndb foi feita seria muito melhor.
##heartbeat_startup_script
sleep 300
heartbeat