首页 » 技术交流 » 正文

一键重启tomcat并自动清除work目录

扫一扫用手机浏览

公司使用tomcat为中间件,每次替换重启要执行太多命令了,烦躁,就自己查询资料写了一个一键重启tomcat并自动清除work目录,有懂得大佬帮忙给提点改进意见。

脚本代码

#!/bin/sh
#==================================
#author by lizhongnian
#2019年6月5日
#将此脚本放入tomcat下的bin目录下
#==================================

#定义要处理的tomcat路径
TomcatPath=$(dirname $(dirname $(readlink -f "$0")))
##定义常用属性
Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
Info="${Green_font_prefix}[信息]${Font_color_suffix}"
Error="${Red_font_prefix}[错误]${Font_color_suffix}"
Tip="${Green_font_prefix}[注意]${Font_color_suffix}"
if [ -z "$TomcatPath" ];then
        echo -e "${Error}:获取到的路径为空!"
        exit
else
        echo "${Info}:你的tomcat路径为:$TomcatPath"
fi

#获取对应tomcat PID
unset pid
pid=$(ps -ef | grep $TomcatPath | grep java | grep -v grep | awk '{print $2}')

#判断是否有正在运行的tomcat进程
if [ ! -n "$pid" ] ; 
then 
echo -e "${Error}:获取pid失败,退出执行"
exit 
else
echo -e "${Info} pid=${pid}"
fi 
#确认有对应的tomcat进程,先进入tomcat的bin目录,使用shutdown停止任务
bash $TomcatPath/bin/shutdown.sh
#等待3s
echo -e "${Info}:执行shutdown,等待3s后继续" 
sleep 3
#第二次检测是否有正在运行的tomcat进程
unset pidTwo
pidTwo=$(ps -ef | grep $TomcatPath | grep java | grep -v grep | awk '{print $2}')
if [ ! -n "$pidTwo" ] ;  
then 
echo -e "${Info}:使用shutdown停止任务成功" 
else
echo -e "${Error}:使用shutdown停止任务失败,即将kill tomcat进程"

length=${echo $pidTwo | awk '{ print $2; }'}
if [ "$length" != "" ];then
        echo "获取到多个pid,退出执行"
        exit
else
        kill -9 $pidTwo
		echo -e "${Info}:tomcat进程停止成功" 
fi
fi 

work_path=$TomcatPath/work/
current_path="$PWD"
cd $work_path
if [ -e Catalina ];then
        rm -rf *
else
        echo "${Tip}:Catalina已经为空了"
fi

echo -e "${Info}:Catalina目录清理成功!" 
cd $current_path
echo -e "${Info}:正在执行启动!" 
bash $TomcatPath/bin/startup.sh
pidNew=$(ps -ef | grep $TomcatPath | grep java | grep -v grep | awk '{print $2}')
echo -e "${Info}:启动成功,重启之后的tomcat进程号为$pidNew" 
stty erase '^H' && read -p " 是否直接打印日志(yes/y:继续;no/n:退出;回车默认打印):" status
case "$status" in
	yes|y)
	echo -e "${Info} 您选择了打印日志!"
	tail -f $TomcatPath/logs/catalina.out 
	;;
	no|n)
	echo -e "${Tip} 您选择了不打印日志!" && exit 1
	;;
	*)
	echo -e "${Info} 您选择了打印日志!"
	tail -f $TomcatPath/logs/catalina.out 
	;;
esac


使用教程

复制上方代码,到服务器tomcat的bin目录下新建一个restart.sh的文件。将代码复制进去,保存。

然后给代码赋予运行权限

chmod +x restart.sh

使用就是执行

./restart.sh或者bash restart.sh

效果图:

说明

此脚本命令多数为本人在网上查询的,都是些基本命令,备注也很清楚,非常适合初学者学习,也希望能有大佬提供一下改进意见。



本文标题:一键重启tomcat并自动清除work目录
本文链接:https://www.7colorblog.com/?id=75
作者授权:除特别说明外,本文由 阿念 原创编译并授权 七彩Blog 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
赞(15

发表评论

天气预报QQ联系咨询电话微信联系tg群组 QQ群 联系邮箱 杂货铺
QQ咨询(2413265289)QQ咨询
联系电话(只收短信)+1(315)996-1004
联系电话(只收短信)+1(213)921-1642