實際上,在linux服務器中,用戶進程運行很長時間是可以接受的。而占用CPU過高則讓其他用戶無法忍受,而其很有可能是用戶程序有問題,這個時候系統應該自動阻止這樣的進程繼續消耗系統資源。
最簡單的方法就是通過ps發現CPU占用率超過某個限制的用戶進程,然後將該進程殺死,這種做法很暴力,而且用戶發現他的進程被殺以後很可能又啟動進程,這樣惡性循環。
有一種折中的方法,不是將目標進程殺死,而是適當調整其nice值,具體見如下shell程序:
renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u {GetProperty(Content)} > 500) print $2}'`