深入探測Linux cluster RPM 安裝過程

來源:互聯網
上載者:User

今天同事在Suse的cluster 2+4的系統上準備安裝給RPM,但是這個RPM中的Spec檔案裡的指令碼需要檢測當前系統的ifconfig資訊,問題就來了。系統在啟動的時候IP interface還沒有完全起來,導致RPM重啟某個服務不起作用。

第一次很簡單的我就想到在Spec中先迴圈檢測IP interface,當檢測到已經起來了再進行服務重啟。結果查看程式log,一直沒有列印迴圈那一塊的日誌。再檢查/var/log/message裡系統的log發現系統log也沒有寫了,一直阻塞在我們打的RPM包那。由此可見cluster安裝RPM是隊列式安裝的,並且Spec裡的指令碼阻塞也會導致整個cluster安裝RPM阻塞!

解決方案:在Spec檔案中對迴圈檢測系統IP Interface的地方用多線程引出來,也就是shell中的後台運行。如何對shell指令碼進行後台執行,請看下面的例子:

# !/bin/bashfor((i = 0 ;i < 5 ;i ++ )); do{    sleep 3 ;echo 1 >> aa  &&  echo " done! "}donewaitcat aa | wc  - lrm aa

這裡程式會順序執行,即需要15s,再看下面的程式:

# !/bin/bashfor((i = 0 ;i < 5 ;i ++ )); do{    sleep 3 ;echo 1 >> aa  &&  echo " done! "} &donewaitcat aa | wc  - lrm aa

這段程式只需3s,原因很簡單,同時執行了,請注意for迴圈後面的&符號。此符號就是讓程式在後台執行。另外再說下wait的作用,就是等上面的背景程式執行完後再執行後面的程式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.