
我已經安裝了 MySQL NDB 叢集。叢集節點之間的資料庫同步大約需要 2-3 分鐘。一旦同步完成,我就可以啟動另一個名為 heartbeat 的應用程式。因此,在我的 shell 腳本中,我想始終檢查 ndbd 服務的可用性。一旦該服務可用,我需要在五分鐘內啟動心跳應用程式。你能幫我寫劇本嗎?
答案1
您也可以嘗試使用“wait”bash 內建指令。
來自“男人狂歡”
等待[n]
等待指定的進程並返回其終止狀態。 n 可以是進程 ID 或作業規格;如果給出了作業規範,則等待該作業管道中的所有進程。如果未給予 n,則等待所有目前活動的子進程,且傳回狀態為零。如果n指定不存在的進程或作業,則傳回狀態為127。
您的腳本可能如下所示:
# 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
答案2
我要做的是讓 ndb 腳本執行另一個腳本,這樣它就不會等待 5 分鐘完成並阻止其他服務啟動。
## whatever starts ndb
exec heartbeat_startup_script
我在這裡設定了睡眠 300(秒),因為您指定了 5 分鐘,但檢查 ndb 同步是否完成會更好。
##heartbeat_startup_script
sleep 300
heartbeat