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

运维经验分享作为一个专题,目前共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进程管理的服务控制脚本编程思路分析

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

#!/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

第一版本(我写的):

#!/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服务进程再次优化过的):

#!/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服务控制脚本第三次优化
时间: 2024-12-15 01:33:21

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

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

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

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

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

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

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

Linux运维经验分享与思路

本文根据讲课笔记整理 1.如何最小化安装系统 精简安装策略: 仅安装需要的,按需安装.不用不装 开发包.基本网络包.基本应用包 Centos6.x下的设置: Centos7.x下的设置: 2.网络设置问题与经验 1).服务器IP地址配置 /etc/sysconfig/network-scripts/ ifcfg-eth0/1/2-. 重启网卡命令: service network restart或者 /etc/init.d/network restart 2).网关/主机名配置 /etc/sys

百万级运维经验五:网站缓存设计

大访问量的网站少不了缓存,那如何设计网站的缓存呢? 网站缓存可以有很多种: 1.根据数据表和主键缓存单条数据,如每个用户,每篇文章等等. 2.缓存数据列表,通常用于显示多条数据的地方.如缓存前200篇文章,因为一般前200条数据的查询次数是最多的. 3.缓存模板块,比如某个页面,其中一部分的内容是很少变动的,可以把这部分内容缓存起来. 4.缓存整个页面,比如首页,当程序生成整个页面的内容时,把内容缓存起来,下次访问时直接从缓存里取. 5.数据统计缓存,如评论数.收藏数等. 目前我所了解的是这4钟

Linux运维 第二阶段 (五)权限管理

Linux运维第二阶段(五)权限管理 一.权限管理(解决用户和身份不足的问题) >#dumpe2fs  -h /dev/sda2             (查询指定分区详细文件系统信息的命令,-h仅显示超级块中的详细信息) #mount  -o remount,acl  /             (重新挂载根分区,加入acl权限) >acl基本命令: #getfacl  文件名                      (查询文件的acl权限) #setfacl  -m  u:用户名:权限

运维百科,分享运维过程中的精华

运维百科 是由多名IDC机房资深运维共同建设的一个基于互联网传播的运维知识分享平台,分享运维过程中的精华,记录运维人点滴生活.   感兴趣的朋友,可以打开www.idcyunwei.org了解! 运维百科,分享运维过程中的精华,布布扣,bubuko.com

Linux服务器集群运维经验

公司大概有5000+以上的服务器节点,包括各种应用,我和同事共同维护大约2500+的服务器,主要包括一些视频cdn,直播视频cdn,webcdn和p2p服务器. 以下是自己在运维工作中的一点经验和看法,希望对大家有所帮助 1.       服务器型号的区分,为以后的统一化和标准化作硬件上的准备,很多人忽视这一点,其实如果这一点做得好会使后面的运维工作轻松很多,根据应用我们主要把服务器分为3中,cpu密集型,主要用于大量计算应用,比如p2p;内存密集型,用于cache类应用,比如squid,var

一个兼职DBA的数据库运维经验 小米科技 [email&#160;protected] 2011

一个兼职DBA的数据库运维经验 小米科技  [email protected] 2011 报警监控系统粒度太大,不好用(我们公司现状)数据库状况:十个服务器,惠普HP380G7 戴尔R710 ,都做了主从全部sas盘 15K RAID10服务器内存24G数据库跟业务混用,不是专门给数据库用 导致出问题(我们公司现状)备份用的xtrabackup 数据库不大:160G 70G 30G程序支持分库分表 --------------------------问题 io util% 100%(学)正常io