shell脚本检测tomcat进程占用内存大小

脚本作用:监控运行中的tomcat内存占用大小,当内存超过所定义的最大使用内存时,自动重启tomcat,达到释放内存的效果。

脚本如下 check_tomcat.sh:

#!/bin/bash
#by Lia
#check tomcat process memery.
#

#define tomcat process, if outride the number, then restart tomcat server.

#4194305 kb = 4 G
tomcat_mem=4194304

#get pids of tomcat5,tomcat6
tomcat_pid=`ps -ef | grep tomcat | grep java | awk 'NR==1 {print $2}'`
echo $tomcat_pid

#get tomcat5's memery(KB).
tomcat_mem=`cat /proc/$tomcat_pid/status | grep -e VmRSS | awk 'NR==1 {print $2}'`
echo $tomcat_mem

#tomcat env
tomcat_home=/opt/tomcat

#define tomcat restart function
function restart_tomcat()
{
pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo $pid

cd $tomcat_home/bin

if [ -n "$pid" ]
then
{
echo ===========shutdown================
./shutdown.sh
sleep 10

pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`
if [ -n "$pid" ]
then
{
sleep 2
echo ========kill tomcat6==============
kill -9 $pid
}
fi
sleep 3
echo ===========startup.sh==============
./startup.sh
}
else
echo ===========startup.sh==============
./startup.sh
fi
}

#check log dir or not, then mkdir log dir
[ ! -d logs ] && mkdir -pv logs

#if tomcat process memery outride tomcat_mem, then restart tomcat server.
if [[ $tomcat_mem -gt $tomcat_mem ]]; then
echo `date "+%F %T"` [Tomcat5 RUNNING]Tomcat\'s memery is outride.>>logs/restart_tomcat_`date "+%F"`.log
restart_tomcat
else
echo `date "+%F %T"` [Tomcat5 RESTART]Tomcat\'s memery not outride.>>logs/restart_tomcat_`date "+%F"`.log
fi

可将脚本写入crontab中,定时检测。

转载于:https://my.oschina.net/yiyuqiuchi/blog/188918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过编写一个 shell 脚本来监控 Tomcat 服务的运行状态。下面是一个简单的示例: ```bash #!/bin/bash # 设置 Tomcat 的安装路径 TOMCAT_HOME="/path/to/tomcat" # 检查 Tomcat 进程是否存在 check_process() { process_count=$(ps aux | grep -v grep | grep -c "org.apache.catalina.startup.Bootstrap") if [ $process_count -eq 0 ]; then return 1 else return 0 fi } # 启动 Tomcat start_tomcat() { if check_process; then echo "Tomcat is already running." else echo "Starting Tomcat..." $TOMCAT_HOME/bin/startup.sh fi } # 停止 Tomcat stop_tomcat() { if check_process; then echo "Stopping Tomcat..." $TOMCAT_HOME/bin/shutdown.sh sleep 5 if check_process; then echo "Tomcat could not be stopped." else echo "Tomcat stopped successfully." fi else echo "Tomcat is not running." fi } # 检查 Tomcat 状态 check_status() { if check_process; then echo "Tomcat is running." else echo "Tomcat is not running." fi } # 根据参数执行相应的操作 case "$1" in start) start_tomcat ;; stop) stop_tomcat ;; restart) stop_tomcat start_tomcat ;; status) check_status ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac ``` 你可以将上述代码保存为一个脚本文件(例如 `tomcat_monitor.sh`),然后在命令行中运行该脚本并传递相应的参数来执行相应的操作。例如: ```bash ./tomcat_monitor.sh start # 启动 Tomcat ./tomcat_monitor.sh stop # 停止 Tomcat ./tomcat_monitor.sh restart # 重启 Tomcat ./tomcat_monitor.sh status # 检查 Tomcat 状态 ``` 注意替换 `TOMCAT_HOME` 的值为你的 Tomcat 安装路径。这个脚本会检查 Tomcat 进程是否存在,并根据传递的参数启动、停止、重启或检查 Tomcat 的运行状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值