LINUX下对Tomcat控制的shell文件

这个shell脚本用于在Linux环境下管理Tomcat服务。它包含检查Tomcat是否正在运行、启动、停止、查看状态、日志管理和数据库连接检查等功能。通过调用不同的参数如'start'、'stop'等,实现对Tomcat服务的操作。

#!/bin/sh
##################################################################
#                                                                #
#                Program    :  busi                              #
#                Author     :                                    #
#                E-mail     :                                    #
#                                                                #
##################################################################

##################################################################
# 函 数 CheckBusi
# 功能简介:检查tomcat是否已在运行
# 详细描述:
#
# 调用说明:
#
# 参    数:
# 返 回 值:
##################################################################
CheckBusi()
{
   BUSI_PROCESS_PID_COUNT=`ps aux | grep '/home/busi/jdk1.5.0_16/jre/bin/java' | grep -v grep | \
      grep -v vi | grep -v tail | grep -v "sh -x" |  awk '{print $2}' | wc -l`
   if [ ${BUSI_PROCESS_PID_COUNT} -ge 1 ]; then
      echo "BUSI[PID:${BJWXCS_BUSI_PROCESS_PID}] has already started and is running normally."
      echo "You cannot start more than 2 busi on a server at one time."
      exit
   else
      echo "==================================================================="
      echo "== busi starts running on `date` =="
      echo "==== You can use command 'busi log' to get a real-time view. ===="
      echo "==================================================================="     
   fi
}

##################################################################
# 函 数 CheckDbConnect
# 功能简介:测试数据路连接是否畅通
# 详细描述:
#
#
# 调用说明:$1:name $2:password $3:servename
#
# 参    数:name 用户名
#           password 密码
#           servename 本地配置的服务名
# 返 回 值:1:测试连接成功
#           0:测试连接失败
##################################################################
CheckDbConnect()
{
su - oracle <<EOF
oracle
sqlplus $1/$2@$3 >/dev/null
set head off
exit
EOF
   echo ""
   if [ $? -ne 0 ]; then
      echo "Trying to connect Oracle using [$3] failed, please check config!"
      return 0
   else
      echo "Check Connect to Oracle Okay."
      return 1
   fi
}


BUSI_PROCESS_PID=`ps aux | grep "/home/busi/jdk1.5.0_16/jre/bin/java" | grep -v grep | \
   grep -v vi | grep -v tail | grep -v "sh -x" |  awk '{print $2}' | sed -n '1p'`
  
case $1 in
# start ##########################################################
start)
# 验证当前的tomcat是否已经启动,若没启动,则启动tomcat
   CheckBusi
   sh /home/busi/busiTomcat/bin/startup.sh
;;
# stop ###########################################################
stop)
   if [ "x${BUSI_PROCESS_PID}" != "x" ]; then
      echo "Stopping BUSI on `date`"
# 杀死当期tomcat的进程     

      kill -9 ${BUSI_PROCESS_PID}
      BUSI_PROCESS_PID=`ps aux | grep "/home/busi/jdk1.5.0_16/jre/bin/java" | grep -v grep | \
         grep -v vi | grep -v tail | grep -v "sh -x" |  awk '{print $2}' | sed -n '1p'`  
      if [ "x${BUSI_PROCESS_PID}" != "x" ]; then
         echo "Trying to stop BUSI failed!"
      else
         echo "BUSI stopped"
      fi
   else
      echo "BUSI is not running"
   fi
;;
# status #########################################################
status)
   echo ""
   echo -n "===========BUSI Status on `date`:"
   if [ "x${BUSI_PROCESS_PID}" != "x" ]; then
      echo -e "[\033[1mRUNNING PID: ${BUSI_PROCESS_PID}\033[0m]==========="
   else
      echo -e "[\033[1mSTOPPED\033[0m]============"
   fi
   echo ""
;;
# log #########################################################
log)
   tail -f /home/busi/busiTomcat/logs/bjwxcs.log
;;
# delLog #########################################################
delLog)
   cat > /home/busi/busiTomcat/logs/bjwxcs.log /dev/null
;;
# dbstatus #########################################################
dbstatus)
   CheckDbConnect busi busi busidb
;;
# others #########################################################
*)
   echo "Usage $0 {start|stop|status|log|delLog|dbstatus}"
;;
esac

<think>我们参考用户提供的引用内容,特别是引用[1]和引用[2]中的示例,来编写一个重启TomcatShell脚本。注意:用户要求寻找一个在Linux系统下重启TomcatShell脚本。我们将结合引用中的示例,编写一个健壮的重启脚本。脚本思路:1.设置Tomcat的安装目录(TOMCAT_HOME)2.停止Tomcat:执行shutdown.sh3.等待一段时间,确保Tomcat停止4.检查Tomcat进程是否还在,如果还在则尝试强制杀死(可选)或者报错退出5.启动Tomcat:执行startup.sh6.等待一段时间,检查Tomcat是否成功启动我们将参考引用[1]中的示例,并做一些改进:-增加进程检查的逻辑,确保在停止后进程确实被终止。-在启动后检查进程是否启动成功。同时,我们参考引用[2]中的示例,考虑在重启前可能做一些操作(如替换配置文件),但用户当前需求只是重启,因此我们可以先提供一个基础的重启脚本,然后如果需要额外的操作(如替换文件),可以提示用户进行扩展。注意:不同的环境可能需要调整,比如进程查找的方式,等待时间等。下面是一个示例脚本:</think>### Linux 系统下重启 TomcatShell 脚本示例 以下是一个健壮的重启 TomcatShell 脚本,包含错误检测和进程管理功能: ```bash #!/bin/bash # Tomcat 重启脚本 # 设置 Tomcat 安装目录(请根据实际路径修改) TOMCAT_HOME="/usr/local/tomcat/apache-tomcat-9.0.68" # 函数:检查 Tomcat 进程状态 check_tomcat_process() { PID=$(ps -ef | grep "$TOMCAT_HOME" | grep -v grep | awk '{print $2}') if [ -n "$PID" ]; then echo "Tomcat 进程运行中 (PID: $PID)" return 0 else echo "Tomcat 进程未运行" return 1 fi } # 停止 Tomcat echo "▸ 正在停止 Tomcat..." $TOMCAT_HOME/bin/shutdown.sh >/dev/null 2>&1 # 等待停止完成(最多 30 秒) TIMEOUT=30 while check_tomcat_process && [ $TIMEOUT -gt 0 ]; do sleep 1 ((TIMEOUT--)) done # 强制终止进程(如果正常停止失败) if check_tomcat_process; then echo "▸ 正常停止失败,尝试强制终止进程..." kill -9 $PID sleep 3 fi # 启动 Tomcat echo "▸ 正在启动 Tomcat..." $TOMCAT_HOME/bin/startup.sh >/dev/null 2>&1 # 检查启动状态 sleep 5 if check_tomcat_process; then echo "✓ Tomcat 重启成功 (新 PID: $PID)" exit 0 else echo "✗ Tomcat 启动失败,请检查日志:$TOMCAT_HOME/logs/catalina.out" exit 1 fi ``` #### 使用说明: 1. **修改路径**:将 `TOMCAT_HOME` 的值替换为您的实际 Tomcat 安装路径 2. **权限设置**:执行前需赋予脚本执行权限 ```bash chmod +x restart_tomcat.sh ``` 3. **执行脚本**: ```bash ./restart_tomcat.sh ``` #### 关键功能说明: 1. **进程检测**:通过 `ps -ef | grep` 精确识别 Tomcat 进程[^1] 2. **双重停止机制**: - 先尝试正常停止 (`shutdown.sh`) - 超时后强制终止进程 (`kill -9`)[^2] 3. **状态反馈**: - 成功时显示新进程 ID - 失败时提示检查日志文件 4. **超时控制**:设置 30 秒停止超时限制,避免无限等待 #### 日志检查建议: 若启动失败,可检查以下日志: ```bash tail -100 $TOMCAT_HOME/logs/catalina.out ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值