shell脚本定时重启tomcat

前几天刚学了一点shell脚本,立马测试一下,写一个定时重启的脚本。

脚本编写

shell基础知识

想好处理逻辑后剩下的就是具体的实现:查询当前tomcat的pid ,kill进程更直接(不用 shutdown.sh 是因为有时候关不掉),然后重启tomcat(使用startup.sh)。过程就这么简单,实现的过程却很坎坷。

vi tomcat_restart.sh
chmod +x tomcat_restart.sh
  1. java环境,需要在脚本里声明,不然startup.sh启动不了(报环境错误,消耗了4个小时解决)。

    // 查询当前的tomcat jdk路径 在这里插入图片描述

     #!/bin/sh
     # the jdk path
     echo "*****************start**************"
     export JAVA_HOME=/home/jdk/jdk1.8.0_161
    
  2. 获取tomcat 进程的ID,需要指定需要重启的tomcat路径(系统中会运行多个tomcat)——(耗时四个小时)
    // 有两种指定tomcat 的路径

    1. shell 脚本存放位置任意时,变量声明指定

       # the tomcat path & script path anywhere
       tomcat_path='/home/*/*/tomcat' 
      
    2. 需将shell脚本存放于tomcat的根目录下

       # the tomcat path & script path in the root of tomcat
       tomcat_path=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
      

    ok ,解决掉路径问题,开始查询它的进程。

     # check and get the tomcat Pid
     tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
    
  3. 开始执行删除、重启操作。

    // 删除

     # shutdown tomcat and restart
     if [ ${tomcat_id} = "" ]
     then
      	echo 'no tomcat pid alive'
      else
      	echo "the tomcat's pid is ${tomcat_id} and will kill it "
      	kill -9 ${tomcat_id}
      	tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
      	
      	if [ ${tomcat_id} = "" ]
      	then 
      		echo 'killed pid success!'
      	fi
      fi
    

    // 重启

     # restart the tomcat 
     # start
     ${tomcat_path}/bin/startup.sh
     # check the tomcat pid is exist
     tomcat_id=`ps -ef|grep ${tomcat_path} | grep -v grep | awk '{print $2}'`
     if test -z ${tomcat_id}
     then
     	echo "the path of ${tomcat_path} restart faild"
     else
     	echo "the path of ${tomcat_path} restart success"
     	echo "the tomcat pid is ${tomcat_id}"
     fi
     echo "************end**************"
    

脚本编写完毕,可单个测试,执行脚本。

./tomcat_restart.sh
  1. 加入定时器、系统定时执行该脚本

     crontab -h           // 查看crontab的使用
     crontab -l          // 列出当前的定时任务
     crontab -e             // 编译、添加定时任务
    
     // 格式:
        */5 *  *  *  * cd /home/*/*/ & ./tomcat_restart.sh > /home/*/*/restart.log                      // 每个五分钟执行一次
    

    说明:
    * * * * * 表示任何时候 //分 时 日 月 周
    , 分割,多个时间点,如1点和4点 1,4
    - 分割 ,一段时间范围内,如1点到四点 1-4
    /n 间隔,没个多少时间,每5分钟,*/5

需要注意的是,定时任务中,对于脚本的存放目录也有要求,cd /home/*/* 先进入到目录下,在执行./tomcat_restart.sh

文中列出的几个点都是踩过的坑,也查询了好多资料。
感谢所有资料的网友。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用cron来定时shell脚本。Cron是一个任务调度程序,它可以在指定的时间间隔内自动执行任务。以下是一个示例cron表达式,用于在每天凌晨4点脚本: ``` 0 4 * * * sh /path/to/your/script.sh ``` 这个表达式将在每天的4点执行你的脚本。你只需要将`/path/to/your/script.sh`替换为你实际的脚本路径。将这个表达式添加到你的系统的cron配置文件中,即可实现定时脚本的功能。 另外,你也可以使用while循环来实现定时。以下是一个示例脚本: ``` #!/bin/sh while true do sh /path/to/your/script.sh sleep 24h done ``` 这个脚本将在执行完你的脚本后等待24小时,然后再次执行。你只需要将`/path/to/your/script.sh`替换为你实际的脚本路径。将这个脚本保存为一个独立的文件,并在终端中运行它,即可实现定时脚本的功能。 希望这些信息对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Linux Shell脚本实现根据进程名定时杀死进程或者进程](https://blog.csdn.net/m0_38130105/article/details/90292355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [通过shell脚本实现中断任务的自动](https://blog.csdn.net/u011345885/article/details/127282870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heroboyluck

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值