Linux伺服器掛死案例分析,linux案例分析
問題現象:
在linux伺服器上運行一個指定的指令碼時,就會出現無數個相同進程的,而且不停的產生,殺也殺不掉,最後系統就陷入死迴圈,無法登陸,只能人工去按機器的電源鍵才可以。這夠崩潰的吧?
問題分析過程:
在分析過程中發現這個特定的指令碼有些特別,和系統中已有的命令的名字是相同的。
以free命令為例:
這個指令碼名字就叫做free(後面沒有帶.sh),而且這個指令檔裡又去調用了free命令。
這個指令碼的本意應該是要去調用free命令來完成一個任務。
那是否就是因為這樣就會導致問題呢?
其實光這樣是不會出問題的,因為指令碼的調用一般要採用如下兩種方式來調用:
方式一、sh free
方式二、./free
如果直接執行free,會去調用系統命令中的free,而不是當前這個指令碼,那也就不會出現問題了。
另外一個條件就是環境變數的配置(Linux中環境設定檔可能為:.bash_profile .profle .bashrc):
對於PATH這個變數的配置,如果這個變數中包含了.,如
PATH=.:xxx:/sbin:/bin:/usr/sbin
在PATH中包含了. 之後,會發生什麼樣的效果呢,執行命令時,會在目前的目錄下去尋找命令,如果我們把點加到了PATH變數的最前面,那就會優先在目前的目錄下尋找命令。
此時再在目前的目錄下執行free,就會執行我們命名為free的指令檔,而指令檔又會調用自身,以此形成死迴圈。
總結:
1.PATH中如果增加點,那麼執行命令時,作業系統會在目前的目錄下尋找命令,如果點放到PATH的最前面,則會優先執行目前的目錄下的命令
2.不要將指令檔命令為與系統命令相同,不要去掉.sh尾碼。堅持一些開發的基本原則,很多時候會避免很多不必要的麻煩。
linux伺服器死機
伺服器死機的原因很多。如果確保在硬體沒問題的情況下。
可以先從/var/log下的日誌查起..通過iostat 或者 vmstat sar 等命令來檢查機器的整體效能狀態。
我不知道你是否做了相關的監控措施,比如通過某些監視軟體對伺服器進行監控。
通過監控資料分析伺服器的整體狀況。
也可以協調應用部門查看應用方面的日誌是否有異常。這個還得按照具體情況分析。
linux下串口讀寫問題掛死
這樣寫肯定會寫死的啊..寫(也就是串口發送資料)實際應用不會這麼頻繁的.樓主可以在寫後加上一個sleep(1);這樣就不會寫死了..
高並發讀寫這樣設計也是錯誤的應該用隊列來處理..