要求:在linux中定时重启一个tomcat服务

一:shell脚本即Shell Script [1],Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

  以上来源于百度百科

  其实,说白了脚本就是融合了shell语法的命令集合体,我们可以通过执行一个.sh脚本文件,来达到执行多个命令的目的

二:以下是一个重启的实例(不了解shell基本语法的可以先了解一下

  a. 在你需要重启的项目的同级目录,新建一个.sh文件:[root@mufeng ~]# touch restartTomcat.sh

                  或者使用vi命令: [root@mufeng ~]# vi restartTomcat.sh

  我的项目是在root下,当然你可以在任何地方建此文件,不过这样看起来更加明了,结构清楚。

  下边是其中具体内容:

#!/bin/bash  
#author: mufeng
#date: --
#Filename: restartTomcat.sh
#Description: 重启tomcat服务 #声明环境变量,可重复使用
export LANG=zh_CN.UTF-
export JAVA_HOME=/usr/local/java/jdk1..0_161
export JRE_HOME=${JAVA_HOME}/jre
export TOMCAT_HOME=/root/myWebsite

#输出开始时间
echo "[$(date +'%F %T')] >>> Tomcat begin to restart." #关闭tomcat服务
${TOMCAT_HOME}/bin/shutdown.sh # Kill all remaining processes 杀掉所有残留进程,不杀掉会占用系统资源
pidList=$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}') if [ "${pidList}" != "" ]
then
echo "残留的进程号:${pidList}";
for pid in $pidList; do
kill - $pid
echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."
done
else
echo "无 残留的进程号";
fi

#启动tomcat服务
${TOMCAT_HOME}/bin/startup.sh

#获取重新启动后的tomcat服务的进程号
pidList2=$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}')
if [ "${pidList2}" != "" ]
then
echo "启动后的进程号:${pidList2}";
echo "[$(date +'%F %T')] >>> Tomcat restart complete."
echo -e "本次tomcat成功重启 \n\n"
else
echo "本次tomcat服务启动出错,请查看/logs/catalina.out日志文件"
fi

  注意,1. 声明的环境变量中,JAVA_HOME后边对应的是你自己的jdk路径

     2. 声明的环境变量中,TOMCAT_HOME后边对应的是你自己的项目路径  

     3. 每次在执行完shutdown.sh命令后,需杀死残留进程,然后再启动服务,这点非常重要。因为残留进程会侵占越来越多的系统资源,甚至重启后都无法正常访问项目

     4. 不要全部复制上边的内容,执行时第一行可能会报错:-bash: ./restartTomcat.sh: /bin/bash  : bad interpreter: No such file or directory

  b. 保存内容(:wq 保存退出),为此文件赋予执行权限:

          [root@mufeng ~]# chmod +x restartTomcat.sh

  c. 测试执行:[root@mufeng ~]# ./restartTomcat.sh

    执行结果如下图:

    

  d. 查看tomcat服务是否启动成功:[root@mufeng ~]# ps -ef|grep tomcat

    

三:配置linux定时任务crond

  以上脚本,可以手动执行,来重启服务,但如果想让其定期自动执行,则还需要配置定时任务crond

  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

  打开定时任务的系统配置文件:[root@mufeng ~]# vi /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed # */ * * * wed root /root/restartTomcat.sh >> /root/restartLog.txt

  最下边一行,是我添加的自己的定时任务(需要执行时,去掉前边的注释“#”)

  */1  *  *  *  wed  代表 每个星期三,每隔一分钟执行一次

  root         代表 root用户

  /root/restartTomcat.sh  代表 要执行的脚本路径

  >>        代表 执行信息的输出位置

  /root/restartLog.txt  代表 执行信息存放的文件名

  保存退出后,系统自动读取加载,隔一分钟,会看见root目录下多了个存放执行信息的文件restartLog.txt

  查看里边的内容如下:

  

  友情提醒:测试完毕,记得注释掉加入的定时配置,不然,你的restartLog.txt文件会越来越大

  “*”代表取值范围内的所有数字, 
  “/”代表”每”,如每2分钟:*/2 
  “-”代表从某个数字到某个数字, 
  “,”分开几个离散的数字

  具体的定时配置,可参考这篇文章:https://blog.csdn.net/liaobangxiang/article/details/72026925

                  https://yq.aliyun.com/ziliao/80818

至此,linux中tomcat服务定时重启的功能完成;

linux定时重启tomcat服务的脚本学习的更多相关文章

  1. Linux 定时重启 Tomcat、重启Keepalived

    1.在 tomcat 目录新建一个.sh 文件: vi restartTomcat.sh 2.输入内容: #!/bin/bash# author: Linnuo # date: -- # Filena ...

  2. Linux每天定时重启Tomcat服务

    1:查看crond 服务状态(确认Linux任务计划服务开启) service crond status crond (pid  1937) is running... 2:编写重启Tomcat的sh ...

  3. 使用shell脚本定时重启tomcat服务

    #!/bin/bash DATE=`date +%Y-%m-%d-%H-%M-%S` echo "当前时间是:$DATE" # 根据端口号查找进程 PID=`/usr/sbin/l ...

  4. Linux下重启多个 tomcat 服务的脚本

    由于修改tomcat的配置文件或手动操作数据库数据后,tomcat的缓存和redis的缓存很严重,需要经常重启tomcat来释放缓存,经常就是手动重启. # .查找tomcat的进程ID ps -ef ...

  5. linux系统下重启tomcat的shell脚本

    linux系统下重启tomcat的shell脚本: #!/bin/shtomcat_home=/opt/apache-tomcat- #找到tomcat进程的id并kill掉 ps -ef |grep ...

  6. 【linux】【tomcat】linux下定时重启tomcat

    步骤: 一.创建脚本文件,本脚本文件用于停止,重启tomcat运行的java进程,并设置脚本文件权限 1.新建脚本文件tomcat.sh [注意文件创建的路径] [查看当前路径的命令:   pwd] ...

  7. 【linux】【tomcat】linux下定时重启tomcat 【CentOS 6.4】【CentOS 7.6】

    本章内容以CentOS 6.4   和   CentOS  7.6  两个版本为例.[6和7的命令不同] 转载 :https://www.cnblogs.com/sxdcgaq8080/p/10730 ...

  8. systemd 编写服务管理脚本---学习

    转载:https://www.cnblogs.com/sparkdev/p/8521812.html 我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql.web serve ...

  9. linux进阶之Tomcat服务篇

    一.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomca ...

随机推荐

  1. IDEA如何把写好的java文件/项目打包成一个jar的文件

    一.命令行的方法 打开cmd,输入jar -cvf [打包后的文件名].jar [要打包的目录]. 二.IDEA的方法 写完一个java程序把它封装成一个jar的包  这样就可以在别的jar上面运行这 ...

  2. 690. Employee Importance

    好几种写法,这里贴几个出来 第一种:暴力解法,除去递归栈,空间复杂度O(1).时间复杂度略高 /* // Employee info class Employee { public: // It's ...

  3. 枚举子窗口EnumChildWindows()的应用

    1.EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数).函数原型: BOOL WINAPI EnumChildWindows( HWND ...

  4. 关于preg_match() / preg_replace()函数的一点小说明

    int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $ ...

  5. denyhost安装脚本

    #!/bin/bashDENYHOSTS=DenyHosts-2.6.tar.gzDENYHOSTS_VERSION=DenyHosts-2.6DENYHOSTS_URL=http://192.168 ...

  6. c#文件比较Code

    我想我们很多时候想比较一个文件里面是否有改动,比如一个dll库是新加了一个方法或修改了其中的方法实现,不能通过可视化的工具来比较的时候,可以用这个小工具来比较, 以下是比较文件的代码. using S ...

  7. BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4805  Solved: 2325[Submit][Sta ...

  8. 用JAVA实现大文件上传及显示进度信息

    一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ...

  9. python使用数据库的一些操作

    学py感觉还是用linux操作系统比较好,下载安装mysql很简单,linux里面都有自带的,但是要用python去用mysql我们就得安装一下他的模块,因为python里面没有自带他的模块,用yum ...

  10. 20155326 第十周课下作业-IPC

    20155326 第十周课下作业-IPC 学习题目: 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 共享内存 管道 FIFO 信号 消息队列 学习过程 -IPC ...