天天看点

shell脚本抓取问题进程(守护进程)

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 &gt; $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 &gt; 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>&gt; $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>$$ &gt; </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>) ]] &amp;&amp; </code><code>kill</code> <code>-s TERM $PID &gt;&amp; </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 &amp;</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,如需转载请自行联系原作者