部署環境:應用以及相關組件,例如nacos,redis都是通過rc.local的一個腳本啟動的。
故障現象:所有組件及應用開機通過這個腳本自啟動順序正常,也都依次啟動了,但是等到自啟動腳本執行完畢后,所有這個腳本里面執行的命令
都會失敗停止,比如nacos。
解決:進過排查是腳本的最后一條curl命令需要訪問網絡,所有在服務器斷網的情況下就是訪問失敗,造成整個腳本執行的命令失敗,而自動停止。
同時查看systemctl status rc-local查看 服務failed。通過查詢資料,如果rc.local執行的命令最后返回的是非0,那么就會造成啟動失敗,整個過程的
命令都會失敗。最后通過在rc.local最后那個腳本的最后一個一行填寫exit 0臨時解決,也就是無論腳本執行情況如何,最后返回碼都是0,成功的。
思考:通過查詢rc.local,其實是屬於systemd的一種服務,其機制是開啟一個shell執行命令,如果最后shell返回碼失敗,那么整個過程失敗。暫時
是這么理解的。