利用linux shell脚本 重启tomcat

在工作中遇到要使用ps -ef | grep tomcat6 来进程ID并kill掉后重启tomcat的场景

killRestart.sh

===============

#!/bin/bash
tomcat6pid=`ps -ef|greptomcat6|grep-v"grep"|awk'{if($17=="-Dcatalina.home=/home/leekim/tomcat6"){print $2}}'`
echo "$(date '+%Y-%m-%d %H:%M:%S')tomcat6 pid before kill is" $tomcat6pid >> /home/leekim/log/restartlog.txt

if [ $tomcat6pid != ""]; then
   kill -9 $tomcat6pid
   echo "$(date'+%Y-%m-%d %H:%M:%S') kill -9" $tomcat6pid>> /home/leekim/log/restartlog.txt
   sleep 6
fi
tomcat6pid=`ps -ef|greptomcat6|grep-v"grep"|awk'{if($17=="-Dcatalina.home=/home/leekim/tomcat6"){print $2}}'`
if [ "$tomcat6pid" = "" ]; then
   /home/leekim/tomcat6/bin/startup.sh
   tomcat6pid=`ps -ef|greptomcat6|grep-v"grep"|awk'{if($17=="-Dcatalina.home=/home/leekim/tomcat6"){print $2}}'`
   echo "$(date'+%Y-%m-%d %H:%M:%S')tomcat6 startup, new pid is " $tomcat6pid >> /home/leekim/log/restartlog.txt
elif [ "$tomcat6pid" !=""]; then
   echo "$(date '+%Y-%m-%d %H:%M:%S')tomcat6 kill -9 failure, pid is"$tomcat6pid>>/home/leekim/log/restartlog.txt
fi


注意:

1. $17具体是什么值,请根据自己的真实环境配置,总会有个条件来过滤判断的,可能是$13、$14等等

2. awk中代码用{}括起来

    awk '{print $2}'

    awk '($17=="xxx"){print $2}'

    awk '{if($17=="xxx"){print $2}}'

3. shell变量赋值等号左右两边没有空格

    test=1

4.shell中if判断(=判相等,注意if和then之间的条件判断格式,主要是空格之类的)

    if [ xx != "" ]; then

       echo "xx"

    fi

   或

    if [ xx != "" ]; then

       echo "11"

    elif [ xx = "" ]; then

       echo "22"

    else

       echo "33"

     fi

5.如果在使用变量的行出现类似信息“第 10 行: [: =: 期待一元表达式”

  多半是因为要变量外没有使用双引号

  错误:if [ $test = "abc" ]; then

  正确:if [ "$test" = "abc" ]; then


定时任务

========

crontab -e

0 5 * * * /home/leekim/killRestart.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值