用 ps 看看哪個程式把 CPU 吃完了

stevens0102發表於2010-09-03
一 個遺留的 SCO Unix 還在執行,上面跑的是人行同城業務,隔幾個月業務部門就反映系統奇慢,系統管理員說有一個程式把 CPU 佔滿了,我以為這個問題已經解決了,但最近業務部門又把這個問題報上來,我就看系統管理員在 SCO 機器上查,我發現他沒有方法和思路,也不知道以前是怎麼解決問題的,據說曾經重灌了一道系統。我問 SCO 上有沒有 top 命令,回答說沒有,我說可以用 ps 把消耗 CPU 最多的幾個程式先挑出來,再具體瞭解那幾個程式是幹什麼的,用下面這個命令列出耗用 CPU 最多的 10 個程式:ps -ef | sort +6r | head -10,為了確認這 10 個程式哪個在 CPU 上跑飛了,可以把 ps 命令和 sleep 命令結合起來,10 個程式不算多了,你把每個程式的 PID 號找出來,執行如下命令:ps -ef | grep ;sleep 20;ps -ef | grep ,如果針對該 PID 的兩次 ps 命令輸出中 CPU 佔用時間(TIME)差接近 20 秒,那麼這個程式就是那個跑飛的程式。最後的檢查結果是跑飛程式是一個才執行幾天的業務終端監控程式,一般情況這種程式編得都不怎麼樣,在技術執行上可以 上些監控手段,在業務執行上可以要求這種程式只在營業時間使用,下班時退出。ps 命令系統管理員應該花點時間熟練掌握,避免犯一些傻錯誤,或做一些傻事,就象重灌系統類的事。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23488160/viewspace-676317/,如需轉載,請註明出處,否則將追究法律責任。

相關文章