需求:
服務B要在服務A之后啟動,且由於存在強內在依賴關系,B必須在A完成初始化之后才能被啟動。
解決方法:
首先使用systemd,service腳本需要配置服務B要after服務A。
其次,A服務的service腳本需要配置Type=notify,並且NotifyAccess=all或main。詳見man 5 systemd.service。
最后,修改A服務的源碼,在其完成初始化工作后,調用sd_notify,並傳入狀態:READY=1。詳見man 3 sd_notify。
本方法是從網上搜集整理來的,看起來可行,但是本人尚未做過驗證。