天天看点

检查服务产生的core文件并做短信处理(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

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

<code>我的博客已迁移到xdoujiang.com请去那边和我交流</code>

<code>一、基础环境说明</code>

<code>1、该脚本用来检查某个服务产生core文件只发送1次短信,相同的core文件不再发送</code>

<code>2、这里模拟3个online目录</code>

<code>ll </code><code>/opt/online/</code>

<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.11</code>

<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.22</code>

<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.33</code>

<code>3、shell说明和使用</code>

<code>1)先创建1个文件</code>

<code>touch</code> <code>/opt/online/online</code><code>.11</code><code>/core</code><code>.111</code>

<code>2)执行第1次脚本后会</code>

<code>ll </code><code>/opt/online/online</code><code>.11/</code>

<code>-rw-rw-r--. 1 root root 0 Apr 27 22:05 core.111</code>

<code>-rw-rw-r--. 1 root root 9 Apr 27 23:27 corefile</code>

<code>cat</code> <code>/opt/online/online</code><code>.11</code><code>/corefile</code> 

<code>core.111</code>

<code>执行第2次时就不会再发送短信和写入到这个corefile文件里了。</code>

<code>3)shell一些语法说明</code>

<code>message=$@</code>

<code>也可以写成message=</code><code>""</code>

<code>$@</code>

<code>所有的位置参数(每个都作为独立的字符串) 等同于</code><code>"$1"</code> <code>"$2"</code><code>... </code><code>"$N"</code><code>。</code>

<code>set</code> <code>-o nounset</code>

<code>在扩展一个没有的设置的变量的时候,显示错误的信息 </code>

<code>set</code> <code>-o errexit</code>

<code>如果一个命令返回一个非0退出状态值(失败),就退出.</code>

<code>二、shell脚本</code>

<code>#!/bin/bash</code>

<code>#--------------------------------------------------  </code>

<code>#Created:2015-04-27</code>

<code>#Author:jimmygong</code>

<code>#Mail:[email protected]</code>

<code>#Function:check core &amp;&amp; send message</code>

<code>#Version:1.0</code>

<code>#--------------------------------------------------</code>

<code>onlinedir=</code><code>"/opt/online"</code>

<code>tellist=(12345678912 12345678913)</code>

<code>function</code> <code>sendmessage () </code>

<code>{</code>

<code>    </code><code>currdate=</code><code>"$(date +%Y/%m/%d)"</code>

<code>    </code><code>message=$@</code>

<code>    </code><code>ip=`</code><code>ifconfig</code> <code>eth1|</code><code>awk</code> <code>'/inet addr:/'</code><code>|</code><code>awk</code> <code>-F: </code><code>'{print $2}'</code><code>|</code><code>awk</code> <code>-F</code><code>" "</code> <code>'{print $1}'</code><code>`</code>

<code>    </code><code>for</code> <code>phone </code><code>in</code> <code>${tellist[@]}</code>

<code>    </code><code>do</code>

<code>        </code><code>links -dump </code><code>"http://192.168.1.1/22222?mobile=$phone&amp;msg=$currdate:$message:$ip&amp;sign=11111111111111111111111111111111"</code> <code>&gt; </code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>done</code>

<code>}</code>

<code>function</code> <code>checkcore ()</code>

<code>    </code><code>num=`</code><code>ls</code> <code>-1 $onlinedir|</code><code>grep</code> <code>"^online"</code><code>|</code><code>wc</code> <code>-l`</code>

<code>    </code><code>for</code> <code>((k=1;k&lt;=${num};k++))</code>

<code>        </code><code>listdir=`</code><code>ls</code> <code>-1 $onlinedir|</code><code>grep</code> <code>"^online"</code><code>|</code><code>sed</code> <code>-n $k</code><code>'p'</code><code>`</code>

<code>        </code><code>for</code> <code>j </code><code>in</code> <code>$onlinedir/$listdir</code>

<code>        </code><code>do</code>

<code>            </code><code>cd</code> <code>$j</code>

<code>            </code><code>touch</code> <code>corefile</code>

<code>            </code><code>for</code> <code>m </code><code>in</code> <code>core.*</code>

<code>            </code><code>do</code>

<code>                </code><code>if</code> <code>[[ -e $m ]]</code>

<code>                </code><code>then</code>

<code>                    </code><code>core=0</code>

<code>                    </code><code>for</code> <code>f </code><code>in</code> <code>`</code><code>cat</code> <code>$j</code><code>/corefile</code><code>`</code>

<code>                    </code><code>do</code>

<code>                        </code><code>if</code> <code>[[ $m = $f ]]</code>

<code>                        </code><code>then</code>

<code>                            </code><code>core=1</code>

<code>                            </code><code>break</code>

<code>                        </code><code>fi</code>

<code>                    </code><code>done</code>

<code>                    </code><code>if</code> <code>[[ $core -</code><code>eq</code> <code>0 ]]</code>

<code>                    </code><code>then</code>

<code>                        </code><code>message=</code><code>"core"</code>

<code>                        </code><code>sendmessage $message            </code>

<code>                        </code><code>echo</code> <code>$m &gt;&gt; $j</code><code>/corefile</code>

<code>                    </code><code>fi</code>

<code>                </code><code>fi</code>

<code>            </code><code>done</code>

<code>        </code><code>done</code>

<code>checkcore</code>

<code>exit</code> <code>0</code>

本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1639520,如需转载请自行联系原作者