天天看點

運維經驗分享(五)-- 改進的java程序管理的服務控制腳本

運維經驗分享作為一個專題,目前共7篇文章

====================================分割線======================================

最初版本(由别人寫的):

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

<code>#!/bin/sh</code>

<code>#chkconfig: 345 86 14</code>

<code>#description: startup and shutdown script for chatterserver</code>

<code>version=1.0.0-snapshot</code>

<code>pidfile=.</code><code>/pid/chatter</code><code>.pid</code>

<code>server=.</code><code>/chatter-</code><code>$version\.jar</code>

<code>args=</code><code>"-xms2g -xmx2g -xmn2g -xss128k"</code>

<code># -xms2g -xmx2g -xmn2g -xss128k -xx:maxpermsize=64m -xx:-useparallelgc -xx:+useparalleloldgc -xx:parallelgcthreads=4 -xx:+useconcmarksweepgc -xx:maxtenuringthreshold=30 -xx:survivorratio=6</code>

<code>start()</code>

<code>{</code>

<code>    </code><code>if</code> <code>test</code> <code>-e $server</code>

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

<code>        </code><code>echo</code> <code>"starting $server"</code>

<code>        </code><code>if</code> <code>java -jar $server $args &gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1 &amp;</code>

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

<code>            </code><code>echo</code> <code>$! &gt; $pidfile</code>

<code>            </code><code>echo</code> <code>"server start ok"</code>

<code>        </code><code>else</code>

<code>            </code><code>echo</code> <code>"server start failed"</code>

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

<code>    </code><code>else</code>

<code>        </code><code>echo</code> <code>"couldn't find $server"</code>

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

<code>}</code>

<code>stop()</code>

<code>         </code><code>if</code> <code>test</code> <code>-e $pidfile</code>

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

<code>                   </code><code>echo</code> <code>"stopping server"</code>

<code>                   </code><code>if</code> <code>kill</code> <code>`</code><code>cat</code> <code>$pidfile` 2&gt;.</code><code>/logs/console</code><code>.out</code>

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

<code>                            </code><code>echo</code> <code>"server stop ok"</code>

<code>                   </code><code>else</code>

<code>                        </code><code>echo</code> <code>"server stop faild"</code>

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

<code>         </code><code>else</code>

<code>                   </code><code>echo</code> <code>"no server running"</code>

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

<code>restart()</code>

<code>    </code><code>echo</code> <code>"restarting server"</code>

<code>    </code><code>stop</code>

<code>    </code><code>start</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>restart)</code>

<code>            </code><code>restart</code>

<code>         </code><code>*)</code>

<code>            </code><code>echo</code> <code>"usage: $scriptname {start|stop|restart|list}"</code> <code>&gt;&amp;2</code>

<code>        </code><code>exit</code> <code>1</code>

<code>esac</code>

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

第一版本(我寫的):

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

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

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

<code>args=</code><code>"-xms2g -xmx4g -xmn4g -xss128k -xx:maxpermsize=64m -xx:-useparallelgc -xx:+useparalleloldgc -xx:parallelgcthreads=4 -xx:+useconcmarksweepgc -xx:maxtenuringthreshold=30 -xx:survivorratio=6"</code>

<code>    </code><code>if</code> <code>test</code> <code>-f $pidfile</code>

<code>        </code><code>if</code> <code>test</code> <code>-d </code><code>/proc/</code><code>$(</code><code>cat</code> <code>$pidfile)</code>

<code>            </code><code>echo</code> <code>"server has started"</code>

<code>            </code><code>exit</code> <code>1</code>

<code>        </code><code>if</code> <code>java -jar $server $args &gt;&gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1 &amp;</code>

<code>            </code><code>sleep</code> <code>2</code>

<code>            </code><code>if</code> <code>[[ -d </code><code>/proc/</code><code>$! ]]; </code><code>then</code>

<code>                </code><code>echo</code> <code>$! &gt; $pidfile</code>

<code>                </code><code>echo</code> <code>"server start ok"</code>

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

<code>        </code><code>elif</code> <code>java -jar $server $args &gt;&gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1 &amp;</code>

<code>                   </code><code>if</code> <code>kill</code> <code>-term `</code><code>cat</code> <code>$pidfile` &gt;&gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1</code>

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

<code>                        </code><code>sleep</code> <code>2</code>

<code>                        </code><code>if</code> <code>test</code> <code>-d </code><code>/proc/</code><code>$(</code><code>cat</code> <code>$pidfile)</code>

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

<code>                            </code><code>echo</code> <code>"server has started"</code>

<code>                            </code><code>sleep</code> <code>60</code>

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

<code>                        </code><code>echo</code> <code>"server stop ok"</code>

<code>                        </code><code>/bin/rm</code> <code>$pidfile</code>

<code>                   </code><code>elif</code>

<code>                    </code><code>kill</code> <code>-kill `</code><code>cat</code> <code>$pidfile` &gt;&gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1</code>

<code>                    </code><code>kill</code> <code>-9 `</code><code>cat</code> <code>$pidfile` &gt;&gt;.</code><code>/logs/console</code><code>.out 2&gt;&amp;1</code>

<code>                        </code><code>echo</code> <code>"server stop failed"</code>

<code>                        </code><code>exit</code> <code>1</code>

<code>                   </code><code>exit</code> <code>1</code>

<code>            </code><code>echo</code> <code>"usage: $0 {start|stop|restart}"</code> <code>&gt;&amp;2</code>

第二版本(最後針對stop服務程序再次優化過的):

117

118

119

<code>                        </code><code>else</code>

<code>                            </code><code>/bin/rm</code> <code>$pidfile</code>

<code>                        </code><code>while</code> <code>[[ -d </code><code>/proc/</code><code>$(</code><code>cat</code> <code>$pidfile) ]]; </code><code>do</code>

<code>                            </code><code>sleep</code> <code>1</code>

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

<code>                            </code><code>echo</code> <code>"server stop failed"</code>

<code>                            </code><code>exit</code> <code>1</code>

--end--