实现Weblogic服务进程监控及自动重启脚本

Weblogic服务器偶尔会挂掉,为了使weblogic能够在挂掉后第一时间能够重启,基于此背景下实现了Weblogic进程监控及自动重启脚本。

第一部分,Weblogic自动重启脚本如下:

#!/bin/sh
port1=8002
ipaddr1=192.168.1.4
currentDate=`date '+%Y-%m-%d %H:%M:%S'`

ps -aux | grep weblogic
sleep 3
port1Info1=`netstat -an|awk '{print $1, $4}' |sort -u| grep '[^0-9]'$port1'$' | grep ''$ipaddr1'' |wc -l`

if [ "$port1Info1" -eq "0" ];
then
  echo 'start'$port1' service.'
  nohup sh /data/weblogic/Oracle/Middleware/user_projects/domains/base_domain/restart_server1.sh
fi
exit 0

遇到的问题:当监控到weblogic进程不存在时,采用绝对路径启动失败;但手动执行监控脚本可正常判断当服务宕机时重启服务,部署到定时任务则无法启动,上述脚本的中的部分代码,如果部署到定时任务则无法自动重启:

nohup sh /data/weblogic/Oracle/Middleware/user_projects/domains/base_domain/restart_server1.sh

解决方法:必须切换到脚本所在的目录执行启动脚本,否则加入到系统定时任务中无法正常自动启动服务,如以下代码:

cd /data/weblogic/Oracle/Middleware/user_projects/domains/base_domain  nohup ./restart_server1.sh&

第二部分,实现了Weblogic监控及调用重启脚本如下:

#!/usr/bin/perl
@array_port = (
8891,
8892,
8893
);
$ipaddr1 = "10.3.40.214";

#$IPADDR=`ifconfig | grep 'inet addr' |sed 2,10d | cut -d: -f2| cut -d' ' -f1`;
#chop $IPADDR;

foreach $port (@array_port[0..$#array_port]){
 my $port1Info = `netstat -an|awk '{print \$1, \$4}' |sort -u| grep '[^0-9]$port\$' | grep '$ipaddr1' |wc -l`;
 chop $port1Info;
 print "$port -- $port1Info\n";
 if ($port1Info == "0"){
   print "start $port service.\n";
   $stat = `sh /data/monWeblogic.sh`;
   print "excute weblogic start script, start status: $stat\n";
 }
}
exit;
上一篇:epoll是如何监控多个描述符及如何获得通知(2)


下一篇:Centos 7下如何配置SMTP SSL(邮箱发送功能)