博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产环境中使用脚本实现tomcat start|status|stop|restart
阅读量:4973 次
发布时间:2019-06-12

本文共 5380 字,大约阅读时间需要 17 分钟。

一、在实际生产环境中tomcat启动是在bin目录下采用自带脚本startup.sh启动;使用shutdown.sh关闭。如下图:

  

  再如果对于新手来讲在不知道路径情况下重启是一件头痛的事情(注意没有reload,所以重启只能shutdown.sh在startup.sh);而且这里还有一个坑等着:

什么坑呢?   如图:

  

  tomcat服务是启动成功了的。那么我想停止服务用shutdown.sh,会出现什么呢?

  

  进程还在而且成为了僵尸进程,万恶啊?居然关不了,终极方法kill -9 进程号。试试?

  

  终于干掉了。

  再次启动:

  

  OK已经成功;还有一个坑在?请看,服务已经启动,如果我再次执行startup.sh会出现什么呢?

  

  请看红色,启动命令能正常执行,而且还能启动一个服务意思是有双服务双进程。万恶啊……

  好问题来了我们如何简单命令的启动tomcat服务呢?如何让服务启动了再次执行启动就不会执行了呢?ok。shell脚本实现:

二、脚本实现

1 #!/bin/bash  2 #############################################  3 # this script is created by xuxuedong.                                           #  4 # e_mail:365686746@qq.com                                                      #  5 # qqinfo:365686746                                                                    #  6 # This is server start to chkconfig.                                                #  7 # version:1.1                                                                              #  8 #############################################  9 # chkconfig: 2345 92 92 10 #         description: Saves and restores system entropy pool for \ 11 #         higher quality random number generatio 12  13 . /etc/init.d/functions 14 #set env 15 export PATH=$PATH:/bin:/sbin:/usr/sbin 16 export LANG="zh_CN.GB18030" 17  18 # Require root to run this script. 19 if [[ "$(whoami)" != "root" ]]; then 20      echo "Please run this script as root." >&2 21      exit 1 22 fi 23  24 # Source function library. 25 #. /etc/init.d/functions 26 if [ ! -f /opt/software/apache-tomcat-7.0.72/bin/startup.sh ] 27        then 28             echo "tomcat is not exit.please install." 29             exit 1 30 fi 31 #This is a function for start tomcat 32 function start(){ 33         if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -eq 0 ] 34               then 35                     /bin/sh /opt/software/apache-tomcat-7.0.72/bin/startup.sh >/dev/null 2>&1 36                     [ $? -eq 0 ]&&\ 37                     sleep 1 38                     action "tmocat start." /bin/true 39               else 40                     action "tomcat had been startted." /bin/true 41                     exit 3 42         fi 43 } 44 #This is a function for stop tomcat 45 function stop(){ 46         if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -gt 0  ] 47                 then 48                         PID=`ps -ef |grep java|grep -v grep|awk '{print $2}'` 49                         kill -9 $PID 50                         [ $? -eq 0 ]&&\ 51                         echo "tomcat is stopping..." 52                         sleep 1 53                         action "tomcat  been stoped." /bin/true 54                  else 55                         action "tomcat had been stoped." /bin/true 56                         exit 4 57         fi 58 } 59 #This is a function for restart tomcat 60 function restart(){ 61         if [ `ps -ef |grep java |grep -v grep|grep -v sh|wc -l` -gt 0  ] 62                then 63                  PID1=`ps -ef |grep java|grep -v grep|awk '{print $2}'` 64                         kill -9 $PID1 65                         [ $? -eq 0 ]&&/bin/sh /opt/software/apache-tomcat-7.0.72/bin/startup.sh >/dev/null 2>&1 66  67                         [ $? -eq 0 ]&&echo "tomcat is restarting..." 68                         sleep 1 69                         action "tomcat is restartted ." /bin/true 70                 else 71                         action "tomcat is not running,please start." /bin/true 72                         exit 5 73         fi 74 } 75 #This is a function for status tomcat 76 function status(){ 77         if [ `ps -ef |grep java |grep -v grep|wc -l` -gt 0  ] 78                 then 79                      action "tomcat is running."  /bin/true 80                 else 81                       action "tomcat is stopped." /bin/false 82                       exit 5 83         fi 84 } 85 case $1 in 86         start) 87         start 88 ;; 89         stop) 90         stop 91 ;; 92         restart) 93         restart 94 ;; 95         status) 96         status 97 ;; 98  99         *)100         echo "USAG:start|stop|restart|status"101 esa
vim tomcatd.sh

 

  放心这脚本是我工作中自己写的启动脚本,已经测试过。如有疑问请看脚本执行情况:

   请看:

  1、首先来看下服务是否启动

   

       脚本实现了查看服务是否启动;

  2、再次执行脚本看看能否启动多个服务

  

  注意红色部分已经提示服务已经启动不需要在执行命令了,而且查看进程只有一个刚启动服务。

  3.停止服务还有僵尸进程吗?:

  

  停止后服务没有了?

  4.那我们在服务没有起来的情况下,我们想重启服务呢?

  

  没有启动服务情况下执行restart会提示,而且服务也不会启动。

  5、启动服务:

  

  服务又起来了。

  6、如果是别人不知道这个服务后面要给参数或者输错了参数start|stop|restart|status才能启动那么会出现什么效果呢?

  

  

  OK到现在所有的功能已经实现而且跟系统的 启动方法类似了。只是系统实现的是、service  XXXX  start|stop|restart|status或者是etc/init.d/xxx   start|stop|restart|status

如何才能实现和系统一模一样的功能呢?

三、使用service  tomcatd  start启停或者是/etc/init.d/tomcatd  start

  1、将脚本文件拷贝至/etc/init.d/

    cp  tomcatd.sh  /etc/init.d/tomcatd

    chmod +x /etc/init.d/tomcatd 加可执行权限。

    默认已经可执行service  tomcatd  start|stop|restart|status

  2、将tomcatd加入chkconfig开机自启动。

    # chkconfig: 2345 92 92  请注意以上脚本文件中有这一行表示2345启动号码是92

    从哪儿来的?

    使用ls  -l   /etc/rc3.d 可查看

    

    注意:最好从中选去没有的号码如:

    

    已经有27了那么不能使用27。

     

    93  94  92 (原本没有之后加入了tomcatd)表示没有用可用

    所以使用92

  3、使用chkconfig  --add   tomcatd  加入

    

    不报错表示成功;

  4、检查一下:chkconfig  --list |grep  tomcatd

    

  

  

  ok  成功!

  以上是简单的脚本实现功能,高手绕道,不好勿喷,适合初学以及脚本学习者,原本想在脚本中增加注释,但是自己想偷懒如有疑问可留言。

 

posted on
2017-04-14 18:56  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/Steward-Xu/p/6710360.html

你可能感兴趣的文章
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
OPENSSL使用方法
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>