使用shell脚本,每分钟检测一次Tomcat是否启动,如果没有启动就启动

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2023-11-14 15:04
  • 1451人已阅读
简介 需求:请使用shell脚本,写一个每分钟检测tomcat是否启动。如果没启动,执行/tomcat_home/bin/startup.sh启动tomcat.注意下面脚本中tomcat_home是不到bin目录的shell脚本如下:#!/bin/bashTOMCAT_HOME="/tomcat_home"CATALINA_HOME="$TOMCAT_HOME/bin/ca

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

需求:

请使用shell脚本,写一个每分钟检测tomcat是否启动。如果没启动,执行/tomcat_home/bin/startup.sh启动tomcat.

注意下面脚本中tomcat_home是不到bin目录的

shell脚本如下:

#!/bin/bash

TOMCAT_HOME="/tomcat_home"
CATALINA_HOME="$TOMCAT_HOME/bin/catalina.sh"

# 检测Tomcat是否在运行
is_tomcat_running() {
  ps aux | grep -v grep | grep "$CATALINA_HOME" > /dev/null
}

# 启动Tomcat
start_tomcat() {
  echo "Starting Tomcat..."
  $TOMCAT_HOME/bin/startup.sh
}

# 检测Tomcat是否在运行
if is_tomcat_running; then
  echo "Tomcat is running."
else
  # Tomcat未运行,启动Tomcat
  start_tomcat
fi

将上述代码保存为一个.sh文件(比如check_tomcat.sh),然后添加执行权限:

chmod +x check_tomcat.sh

接着,你可以使用cron定时任务每分钟执行该脚本。打开cron表编辑器:

crontab -e

然后添加以下行,保存并退出:

* * * * * /path/to/check_tomcat.sh


这样,每分钟cron任务将运行check_tomcat.sh脚本,检测Tomcat是否在运行,如果没有运行,则启动Tomcat。确保替换脚本中的/tomcat_home为你的实际Tomcat安装路径。

脚本执行

执行这个Shell脚本可以分为两个步骤:

  1. 保存脚本文件: 将脚本保存到一个文件中,比如 check_tomcat.sh

  2. 给脚本文件添加执行权限: 在终端中运行以下命令:

chmod +x check_tomcat.sh
  1. 这个命令将赋予 check_tomcat.sh 文件执行权限。

  2. 运行脚本: 执行脚本的命令是:

./check_tomcat.sh


如果你的脚本在当前目录,你可以直接运行上述命令。如果脚本在其他目录,你需要提供脚本的完整路径。例如,如果脚本在 /path/to/check_tomcat.sh,则运行:

/path/to/check_tomcat.sh

确保你对脚本文件具有执行权限,并替换脚本中的变量为你实际的Tomcat安装路径。如果你想让脚本每分钟运行一次,你可以将它添加到crontab中,如我之前的回答中所述。

错误信息

在执行check_tomcat.sh命令的时候,错误如下:

-bash: ./check_tomcat.sh: /bin/bash^M: bad interpreter: No such file or directory

d92e20b4453ff2cc04f8036dd5f36341.png

这个错误通常是由于在Windows系统上编辑脚本文件并将其传输到类Unix系统(如Linux)上时引起的换行符格式问题。Windows使用CRLF(回车换行)作为行结束符,而Unix使用LF(仅换行)。

你可以使用 dos2unix 命令来转换文件格式。在终端中运行以下命令:

dos2unix check_tomcat.sh

执行上格式转换后,在执行启动命令,就可以看到成功了。如下图:

61b214227c5fedbb512bd4827a95fb9c.png

扩展:

如果你在Linux系统上没有安装 dos2unix,你可以使用 sed 命令来执行相同的操作:

sed -i 's/\r$//' check_tomcat.sh







TopTop