萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> linux中限制CPU和內存占用率方法

linux中限制CPU和內存占用率方法

   查看cpu占用

  在命令行中輸入 “top”

  即可啟動 top

  top 的全屏對話模式可分為3部分:系統信息欄、命令輸入欄、進程列表欄。

  使用top查看系統負荷

  top命令可以動態監視系統負荷,包括CPU、內存的使用率和占用資源較多的進程詳情等。

  動態查看系統負荷(占用一個終端)

  top

  顯示後退出

  top -n 1

  以文本方式輸出,以備其它程序使用

  top -b

  好了,我們現在來看限制CPU和內存占用率方法

  腳本內容:

 代碼如下  

#!/bin/sh
UPID=`top -bn 1 | grep "^ *[1-9]" | awk '{ if($9 > 20 || $10 > 25 && id -u $2 > 500) print $1}'`
for PID in $UPID
do
renice +10 $PID
echo "renice +10 $PID"
done

  我對上面的腳本進行了修改,可以讓其針對整個服務器的進程進行限制.

  修改後的腳本:

 代碼如下  

#!/bin/sh
UPID=`top -bn 1 | grep "^ *[1-9]" | awk '{ if($9 > 50 || $10 > 25 ) print $1}'`
for PID in $UPID
do
renice +10 $PID
echo "renice +10 $PID"
done

  可以將這個腳本放到cron中運行,讓其每分鐘檢查一次:

 代碼如下   chmod +x limit.sh
vi /etc/crontab
*/1 * * * * /bin/sh /root/soft_shell/limit.sh

  ps:

  n : 更新的次數,完成後將會退出 top

  b : 批次檔模式,搭配 “n” 參數一起使用,可以用來將 top 的結果輸出到檔案內

  那麼top -bn 1 就是獲取一次,top的輸出結果。

  grep "^*[1-9]" : 是為了直接獲取PID號,排除掉表頭等信息。

  awk '{ if($9 > 20 || $10 > 25 && id -u $2 > 500) print $1}' :

  取得cpu使用率大於20%或者內存使用率大於25%,且用戶uid大於500的進程pid。

copyright © 萬盛學電腦網 all rights reserved