运维经验分享(五)-- 改进的java进程管理的服务控制脚本

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dgd2010.blog.51cto.com/1539422/1677157

运维经验分享作为一个专题,目前共7篇文章

  1. 运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本

  2. 运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化

  3. 运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)

  4. 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

  5. 运维经验分享(五)-- 改进的java进程管理的服务控制脚本

  6. 运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

  7. 运维经验分享(七)-- Linux Shell之ChatterServer服务控制脚本第三次优化

====================================分割线======================================

针对上一篇文章《运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

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

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
#!/bin/sh
#chkconfig: 345 86 14
#description: Startup and shutdown script for ChatterServer
VERSION=1.0.0-snapshot
PIDFILE=. /pid/chatter .pid
SERVER=. /chatter- $VERSION\.jar
ARGS= "-Xms2g -Xmx2g -Xmn2g -Xss128k"
# -Xms2g -Xmx2g -Xmn2g -Xss128k -XX:MaxPermSize=64m -XX:-UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=30 -XX:SurvivorRatio=6
 
start()
{
     if  test  -e $SERVER
     then
         echo  "Starting $SERVER"
         if  java -jar $SERVER $ARGS >. /logs/console .out 2>&1 &
         then
             echo  $! > $PIDFILE
             echo  "server start OK"
         else
             echo  "server start failed"
         fi
     else
         echo  "Couldn't find $SERVER"
     fi
}
 
stop()
{
          if  test  -e $PIDFILE
          then
                    echo  "Stopping server"
                    if  kill  ` cat  $PIDFILE` 2>. /logs/console .out
                    then
                             echo  "server stop OK"
                    else
                         echo  "server stop faild"
                    fi
          else
                    echo  "No server running"
          fi
}
 
restart()
{
     echo  "Restarting server"
     stop
     start
}
 
case  $1  in
          start)
                 start
         ;;
          stop)
             stop
         ;;
          restart)
             restart
         ;;
          *)
             echo  "Usage: $SCRIPTNAME {start|stop|restart|list}"  >&2
         exit  1
         ;;
esac
exit  0

第一版本(我写的):

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
#chkconfig: 345 86 14
#description: Startup and shutdown script for ChatterServer
VERSION=1.0.0-snapshot
PIDFILE=. /pid/chatter .pid
SERVER=. /chatter- $VERSION\.jar
ARGS= "-Xms2g -Xmx4g -Xmn4g -Xss128k -XX:MaxPermSize=64m -XX:-UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=30 -XX:SurvivorRatio=6"
# -Xms2g -Xmx2g -Xmn2g -Xss128k -XX:MaxPermSize=64m -XX:-UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=30 -XX:SurvivorRatio=6
 
start()
{
     if  test  -f $PIDFILE
     then
         if  test  -d  /proc/ $( cat  $PIDFILE)
         then
             echo  "server has started"
             exit  1
         fi
     fi
     if  test  -e $SERVER
     then
         echo  "Starting $SERVER"
         if  java -jar $SERVER $ARGS >>. /logs/console .out 2>&1 &
         then
             sleep  2
             if  [[ -d  /proc/ $! ]];  then
                 echo  $! > $PIDFILE
                 echo  "server start OK"
             fi
         elif  java -jar $SERVER $ARGS >>. /logs/console .out 2>&1 &
         then
             sleep  2
             if  [[ -d  /proc/ $! ]];  then
                 echo  $! > $PIDFILE
                 echo  "server start OK"
             fi
         else
             echo  "server start failed"
             exit  1
         fi
     else
         echo  "Couldn't find $SERVER"
         exit  1
     fi
}
 
stop()
{
          if  test  -e $PIDFILE
          then
                    echo  "Stopping server"
                    if  kill  -TERM ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         sleep  2
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             echo  "server has started"
                             sleep  60
                         fi
                         echo  "server stop OK"
                         /bin/rm  $PIDFILE
                    elif
                     kill  -KILL ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         sleep  2
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             echo  "server has started"
                             sleep  60
                         fi
                         echo  "server stop OK"
                         /bin/rm  $PIDFILE
                    elif
                     kill  -9 ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         sleep  2
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             echo  "server has started"
                             sleep  60
                         fi
                         echo  "server stop OK"
                         /bin/rm  $PIDFILE
                    else
                         echo  "server stop failed"
                         exit  1
                    fi
          else
                    echo  "No server running"
                    exit  1
          fi
}
 
restart()
{
     echo  "Restarting server"
     stop
     start
}
 
case  $1  in
          start)
                 start
         ;;
          stop)
             stop
         ;;
          restart)
             restart
         ;;
          *)
             echo  "Usage: $0 {start|stop|restart}"  >&2
         exit  1
         ;;
esac
exit  0

第二版本(最后针对stop服务进程再次优化过的):

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
#chkconfig: 345 86 14
#description: Startup and shutdown script for ChatterServer
VERSION=1.0.0-snapshot
PIDFILE=. /pid/chatter .pid
SERVER=. /chatter- $VERSION\.jar
ARGS= "-Xms2g -Xmx4g -Xmn4g -Xss128k -XX:MaxPermSize=64m -XX:-UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=30 -XX:SurvivorRatio=6"
# -Xms2g -Xmx2g -Xmn2g -Xss128k -XX:MaxPermSize=64m -XX:-UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=30 -XX:SurvivorRatio=6
 
start()
{
     if  test  -f $PIDFILE
     then
         if  test  -d  /proc/ $( cat  $PIDFILE)
         then
             echo  "server has started"
             exit  1
         fi
     fi
     if  test  -e $SERVER
     then
         echo  "Starting $SERVER"
         if  java -jar $SERVER $ARGS >>. /logs/console .out 2>&1 &
         then
             sleep  2
             if  [[ -d  /proc/ $! ]];  then
                 echo  $! > $PIDFILE
                 echo  "server start OK"
             fi
         elif  java -jar $SERVER $ARGS >>. /logs/console .out 2>&1 &
         then
             sleep  2
             if  [[ -d  /proc/ $! ]];  then
                 echo  $! > $PIDFILE
                 echo  "server start OK"
             fi
         else
             echo  "server start failed"
             exit  1
         fi
     else
         echo  "Couldn't find $SERVER"
         exit  1
     fi
}
 
stop()
{
          if  test  -e $PIDFILE
          then
                    echo  "Stopping server"
                    if  kill  -TERM ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         sleep  2
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             sleep  60
                         else
                             echo  "server stop OK"
                             /bin/rm  $PIDFILE
                         fi
                    elif
                     kill  -KILL ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         sleep  2
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             sleep  60
                         else
                             echo  "server stop OK"
                             /bin/rm  $PIDFILE
                         fi
                    elif
                     kill  -9 ` cat  $PIDFILE` >>. /logs/console .out 2>&1
                     then
                         while  [[ -d  /proc/ $( cat  $PIDFILE) ]];  do
                             sleep  1
                         done
                         if  test  -d  /proc/ $( cat  $PIDFILE)
                         then
                             echo  "server stop failed"
                             exit  1
                         else
                             echo  "server stop OK"
                             /bin/rm  $PIDFILE
                         fi
                    else
                         echo  "server stop failed"
                         exit  1
                    fi
          else
                    echo  "No server running"
                    exit  1
          fi
}
 
restart()
{
     echo  "Restarting server"
     stop
     start
}
 
case  $1  in
          start)
                 start
         ;;
          stop)
             stop
         ;;
          restart)
             restart
         ;;
          *)
             echo  "Usage: $0 {start|stop|restart}"  >&2
         exit  1
         ;;
esac
exit  0

--end--

====================================分割线======================================

运维经验分享作为一个专题,目前共7篇文章

  1. 运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本

  2. 运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化

  3. 运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)

  4. 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

  5. 运维经验分享(五)-- 改进的java进程管理的服务控制脚本

  6. 运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

  7. 运维经验分享(七)-- Linux Shell之ChatterServer服务控制脚本第三次优化

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1677157

目录
相关文章
|
15天前
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
24 1
|
23天前
|
机器学习/深度学习 人工智能 运维
智能化运维:提升IT服务效率的新引擎###
本文深入浅出地探讨了智能化运维(AIOps)如何革新传统IT运维模式,通过大数据、机器学习与自动化技术,实现故障预警、快速定位与处理,从而显著提升IT服务的稳定性和效率。不同于传统运维依赖人工响应,AIOps强调预测性维护与自动化流程,为企业数字化转型提供强有力的支撑。 ###
|
1月前
|
运维 Java Linux
【运维基础知识】掌握VI编辑器:提升你的Java开发效率
本文详细介绍了VI编辑器的常用命令,包括模式切换、文本编辑、搜索替换及退出操作,帮助Java开发者提高在Linux环境下的编码效率。掌握这些命令,将使你在开发过程中更加得心应手。
36 2
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
40 1
|
1月前
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
39 1
|
1月前
|
运维 监控 Java
使用jps命令查看Java进程
`jps`是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举。通过合理利用其提供的参数,可以高效地进行故障排查、性能监控及日常管理任务,确保Java应用稳定运行。
69 2
|
2月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
144 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
1月前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
31 0
|
2月前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
45 1
|
1月前
|
SQL Java 数据库连接
如何在 Java 脚本中有效地使用 JDBC
如何在 Java 脚本中有效地使用 JDBC
17 0
下一篇
无影云桌面