diff --git a/DevOps.md b/DevOps.md index 32bc6f6..6b4f918 100644 --- a/DevOps.md +++ b/DevOps.md @@ -772,6 +772,40 @@ awk'{print $8}' 2017-05-22-access_log|egrep '301|302'| wc -l ![img](images/DevOps/1657486-20200110163906854-1971599861.png) +监控内存、磁盘和CPU的脚本: + +```shell +# 监控内存:awk 'NR==2’ 表示从第2行开始提取数据 +free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }' +# 监控磁盘:df -h | awk '$NF=="/" 表示将转到包含字符/的那一行 +df -h | awk '$NF=="/"{printf "%s\t\t", $5}' +# 监控 CPU:top -bn1命令将只执行一次top命令(n1表示1次迭代);grep load将输出包含字符串load的行。$(NF-2)将计算该行上的字段数并减 2 +top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}' +``` + +创建脚本:(运行一个小时,每次休眠5秒) + +```shell +#! /bin/bash +printf "Memory\t\tDisk\t\tCPU\n" +end=$((SECONDS+3600)) +while [ $SECONDS -lt $end ]; do +MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }') +DISK=$(df -h | awk '$NF=="/"{printf "%s\t\t", $5}') +CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}') +echo "$MEMORY$DISK$CPU" +sleep 5 +done +``` + +执行命令: + +```shell +[root@localhost tmp]# ./stats.sh >> log.txt +``` + + + ## CPU 从 CPU 的角度来说,主要的性能指标就是 **CPU 的使用率**、**上下文切换**以及 **CPU 缓存的命中率**等。