zoukankan      html  css  js  c++  java
  • shell脚本实现重启tomcat项目

    背景: 

      日常工作中有时会需要手动重启tomcat项目,每次都是cd  到项目路径下--->cd   bin--->./startup.sh, 一直都是重复性的 cd  cd cd   很烦人。有次同事说,怎么不把它搞成自动化脚本呢?每次这样搞,多浪费时间。 so  决定写个脚本解放双手。

    之前考虑过有python来实现,后来放弃了。目前服务器中的python版本是2.6.6,目前大多数用的版本是python 3.x 。 

    需求:

      想用脚本重启tomcat项目,通过传参的方式(参数:项目的名称) 。

      脚本名称:restartApp.sh

      脚本运行方式:sh restartApp.sh  tomcat-8107

    代码:

    #!/bin/bash
    set -x
    #ps_result=`ps -ef | grep tomcat| grep $1`
    #echo "${ps_result}"
    
    echo -e "
    
    
    "
    pids=`ps -ef| grep tomcat |grep $1 |grep -v 'grep'|grep -v 'restartApp.sh'|awk '{print $2}'`
    count=0
    pid_num=0
    for pid in ${pids}
    do 
    	pid_num=${pid}
    	echo "pid_num:${pid_num}"
    	#count=`expr ${count}+1`
    	count=$(($count+1))
    	echo  "count: ${count}"
    done
    
    if [[ $count -gt 1 ]]
    then
    	echo  "一个项目有两个进程 异常"
    else
    	kill -9 ${pids}
    	echo "Kill ${pids}  Success!"
    	#重启
    	echo  "重启中。。。。。。。"
    	sh /home/lifesea/$1/bin/startup.sh
    fi
    echo -e "
    
    
    "

    知识点:

    1. #!/bin/bash是指此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面根的是解释此脚本的shell的路径。

    2. grep -v 是反向查找的意思,比如 grep -v restartApp 就是查找不含有 restartApp 字段的行
    3. shell 传递变量 如下:

      截图文字来源:https://www.cnblogs.com/bclshuai/p/7409773.html
    4. awk '{print $2}'   打印第二个字段

    遇到的问题:

    1.反撇号的用处,第一次用到

    2.

    开始的时候: 没有加 grep -v 'restartApp.sh'   导致查询出来的进程有很3个(除了grep),如下图  

    更改后:ps -ef| grep tomcat |grep $1 |grep -v 'grep'|grep -v 'restartApp.sh'|awk '{print $2}'

    执行以下语句得出如下图的结果

      $1更改为:grep tomcat-8107

    #ps_result=`ps -ef | grep tomcat| grep $1`
    #echo "${ps_result}"

    3.在服务器上调试脚本 vim restartApp.sh 脚本   因为不熟悉的缘故,导致效率低。

    vim 常用快捷键: 

    :set number  显示行号

    :set  -x    详细的日志输出

    h      向前

    j       向下

    k      向上

    l      向右

    4.感谢znn  从昨天下午一直到今天,一直协助我定位问题。

  • 相关阅读:
    Redis3.0.1 Stable版本的集群部署(Mac)
    Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误
    Key/Value存储系统etcd的特性
    实时消息平台NSQ的特性
    StringIO函数
    对文件内容进行迭代
    基本文件方法
    打开文件
    正则表达式知识点汇总
    编译
  • 原文地址:https://www.cnblogs.com/eosclover/p/11208626.html
Copyright © 2011-2022 走看看