我需要使用shell脚本检查,可能没有安装任何特定软件包(操作系统:Linux Suse 12),总CPU%使用率,以便在不超过临界阈值的情况下监控级别
这是一台拥有2x E5-2667 v4 8 /核心的巨大服务器。
仔细查看我发现的问题并尝试了一下:
1-top -bn1 | grep "Cpu(s)" | \sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \awk '{print 100 - $1"%"}'
2-CPU_LOAD=$(sar -P ALL 1 2 |grep 'Average.*all' |awk -F" " '{print 100.0 -$NF}')
我也试图从iostat
做100空闲使用代码我得到了一个单核的平均值,而我需要在%中使用总CPU的结果 问候, 感谢
答案 0 :(得分:1)
您可能更好地在awk中完全实现解决方案:
top -bn1 | awk -F, '/id/ { for (i=1;i<=NF;i++) { if ( $i ~ /[[:digit:]]{2}.[[:digit:]][[:blank:]]+id/ ) { split($i,arry," ");print arry[1]" - idle" }'
从顶部获取输出,然后检查包含id的任何输出。如果满足条件,则将行上的每个逗号分隔数据和模式匹配2个数字,小数,然后是一个或多个数字,空白,然后是id。如果是这种情况,请将基于空格的变量拆分为数组并打印第一个元素。
答案 1 :(得分:1)
如果您想获得任何详细统计信息,您也可以使用perf
。
在此示例中,您可以看到1秒内所有CPU周期的数量:
-bash-4.1# perf stat -a sleep 1
Performance counter stats for 'system wide':
4002.822144 task-clock (msec) # 3.999 CPUs utilized (100.00%)
22809 context-switches # 0.006 M/sec (100.00%)
1332 cpu-migrations # 0.333 K/sec (100.00%)
23794 page-faults # 0.006 M/sec
5409531172 cycles # 1.351 GHz (100.00%)
<not supported> stalled-cycles-frontend
<not supported> stalled-cycles-backend
3874289082 instructions # 0.72 insns per cycle (100.00%)
715152901 branches # 178.662 M/sec (100.00%)
20583742 branch-misses # 2.88% of all branches
1.001065623 seconds time elapsed
答案 2 :(得分:0)
您也可以查看uptime
。
正常运行时间显示以下信息的一行显示。当前时间,系统运行的时间,当前登录的用户数以及过去1分钟,5分钟和15分钟的系统负载平均值。