一、前言
每次重启Tomcat,需要使用命令sh start.sh
,这种官方自带的不会先关闭,也不会清除缓存。
大厂在用的快捷重启Tomcat的部署文件sh restart.sh
,有以下功能:
- 先关闭Tomcat
- 清空work目录缓存
- 启动Tomcat
- 查看最新Tomcat日志
如图:
二、源码
复制保存文件,记得修改user。
#!/bin/bash
export LANG=zh_CN.GB18030
path=$(dirname -- $(readlink -f -- "$0"))
cd $path
timestamp=$(date +%Y%m%d_%H%M);
user="root";
sleeptime=3;
tomcat=$(pwd|awk -F'/' '{print $(NF-1)}')
#host=$(cat ./root.xml|grep serverName|awk -F"[<>]" '{print $3}' >/dev/null 2>&1)
###############################################################################################
#检查用户
function checkUser
{
username=$(whoami)
if [ "$username" != "$user" ]; then
echo "本程序只能以$user用户执行!"
exit 1;
fi
}
function clearWork
{
echo -n "清空work目录......"
rm -rf $path/../work/Catalina/* && echo "OK!"
#mv $path/../logs/catalina.out $path/../logs/catalina.out.$timestamp >/dev/null 2>&1;
}
function showStatus
{
pid=$(ps -ef |grep "\<$tomcat\>"|grep -v grep|grep -v 'bash'|awk '{print $2}')
name=$(ps -ef |grep "\<$tomcat\>"|grep -v grep|grep -v 'bash'|awk -F'home=' '{print $2}'|awk '{print $1}')
echo -n "进程ID:$pid 容器路径:$name"
}
function shutdownApp
{
echo -n "shutdown应用......"
showStatus
./shutdown.sh >/dev/null 2>&1
sleep $sleeptime
kill -9 $pid >/dev/null 2>&1
echo "......OK!"
clearWork
}
function startApp
{
echo -n "startup应用......."
./startup.sh >/dev/null 2>&1
sleep $sleeptime;
showStatus
echo "......OK!"
echo ""
echo "应用最新日志:"
echo ""
tail -n 200 $path/../logs/catalina.out
echo ""
echo "tail -n 200 $path/../logs/catalina.out"
}
#clear
echo "*********************** 当前应用:$host ***************************"
checkUser
shutdownApp;
startApp;
exit;
如果执行报权限不足(Permission denied),则先执行以下命令授权:
chmod 777 restart.sh