1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<code>我的博客已迁移到xdoujiang.com请去那边和我交流</code>
<code>晚上某个时段收到某台服务器load很高,但再登录服务器查看时候load可能已经下降了,</code>
<code>所以使用shell脚本来处理解决问题 监控频率30秒1次 将系统负载超过一定数值就记录到文本里</code>
<code>cat</code> <code>load.sh </code>
<code>#!/bin/bash</code>
<code>#--------------------------------------------------</code>
<code>#Author:jimmygong</code>
<code>#Email:[email protected]</code>
<code>#FileName:load.sh</code>
<code>#Function: </code>
<code>#Version:1.0 </code>
<code>#Created:2015-06-02</code>
<code>sleeptime=30</code>
<code>logpath=</code><code>"/opt/scripts"</code>
<code>[[ -d $logpath ]] || </code><code>mkdir</code> <code>$logpath</code>
<code>echosucc () </code>
<code>{</code>
<code> </code><code>succstatus=</code><code>"[ Ok ]"</code>
<code> </code><code>printf</code> <code>"\033[32m $succstatus $* \033[0m\n"</code>
<code>}</code>
<code>function</code> <code>usage ()</code>
<code> </code><code>echo</code> <code>"Usage: $0 {start|stop}"</code>
<code>if</code> <code>[[ $</code><code># -ne 1 ]]</code>
<code>then</code>
<code> </code><code>usage</code>
<code> </code><code>exit</code> <code>1</code>
<code>fi</code>
<code>function</code> <code>start () </code>
<code> </code><code>echosucc </code><code>"Starting load monitor"</code>
<code> </code><code>while</code> <code>true</code>
<code> </code><code>do</code>
<code> </code><code>load=$(</code><code>cat</code> <code>/proc/loadavg</code><code>|</code><code>awk</code> <code>'{print $1}'</code><code>)</code>
<code> </code><code>cpunum=$(</code><code>cat</code> <code>/proc/cpuinfo</code><code>|</code><code>grep</code> <code>-c processor)</code>
<code> </code><code>if</code> <code>[[ $(</code><code>echo</code> <code>"$load > $cpunum"</code> <code>| </code><code>bc</code><code>) = 1 ]]</code>
<code> </code><code>then</code>
<code> </code><code>result=$(</code><code>ps</code> <code>-eo pcpu,pmem,user,args|</code><code>awk</code> <code>'$1 > 0'</code> <code>|</code><code>sort</code> <code>-nr)</code>
<code> </code><code>if</code> <code>[[ -n </code><code>"$result"</code> <code>]]</code>
<code> </code><code>then</code>
<code> </code><code>echo</code> <code>"$result"</code> <code>> $logpath</code><code>/load</code><code>.$(</code><code>date</code> <code>+</code><code>"%Y%m%d%H%M"</code><code>)</code>
<code> </code><code>fi</code>
<code> </code><code>fi</code>
<code> </code><code>sleep</code> <code>$sleeptime</code>
<code> </code><code>done</code>
<code>function</code> <code>stop () </code>
<code> </code><code>echo</code> <code>$$ > </code><code>"$logpath/pidfile"</code>
<code> </code><code>for</code> <code>PID </code><code>in</code> <code>$(</code><code>ps</code> <code>-eo pid,</code><code>command</code><code>|</code><code>grep</code> <code>"$0"</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>grep</code><code>|</code><code>awk</code> <code>'{print $1}'</code><code>);</code>
<code> </code><code>[[ $PID != $(</code><code>cat</code> <code>$logpath</code><code>/pidfile</code><code>) ]] && </code><code>kill</code> <code>-s TERM $PID >& </code><code>/dev/null</code>
<code> </code><code>echosucc </code><code>'Stopping load monitor'</code>
<code>case</code> <code>$1 </code><code>in</code>
<code> </code><code>start)</code>
<code> </code><code>start &</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>stop</code>
<code> </code><code>*)</code>
<code>esac</code>
本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1657964,如需转载请自行联系原作者