启动和监控脚本

start.sh

#!/bin/sh

#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
LD_LIBRARY_PATH=../lib:$LIBPATH:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
LIBPATH=../lib:$LIBPATH
export LIBPATH

PROGRAMNAME="agent"
COMMANDLINE="./${PROGRAMNAME} -m"
LOGFILE="../log/monitor.log"

LOGPATH=`dirname $LOGFILE`
if [ ! -d $LOGPATH ]
then
mkdir -p $LOGPATH
fi

logtime=`date +"%Y-%m-%d %H:%M:%S"`
PID=`ps -ef|grep -v grep|grep "${COMMANDLINE}"|awk ‘{print $2;}‘`;

if [ "$PID" = "" ]
then
echo "[${logtime}] ${COMMANDLINE} -> start" | tee -a ${LOGFILE}
nohup ${COMMANDLINE} 4 >>${LOGFILE} 2>&1 &
sleep 1
PID=`ps -ef|grep -v grep|grep "${COMMANDLINE}"|awk ‘{print $2;}‘`
if [ "$PID" = "" ]
then
echo "[${logtime}] ${COMMANDLINE} -> start failed, please check logfile[${LOGFILE}]!" | tee -a ${LOGFILE}
fi
else
echo "[${logtime}] ${COMMANDLINE} -> exist" #| tee -a ${LOGFILE}
fi

stop.sh

#!/bin/sh

PROGRAMNAME="agent"
COMMANDLINE="./${PROGRAMNAME} -m"
LOGFILE="../log/monitor.log"

logtime=`date +"%Y-%m-%d %H:%M:%S"`
echo "[${logtime}] ${COMMANDLINE} -> stop" | tee -a ${LOGFILE}
ps -ef |grep -v grep | grep "${COMMANDLINE}"|awk ‘{print "kill -9 ",$2}‘|sh 2>>${LOGFILE}

PID=`ps -ef|grep -v grep|grep "${COMMANDLINE}"|awk ‘{print $2;}‘`
if [ "$PID" != "" ]
then
echo "[${logtime}] ${COMMANDLINE} -> stop failed, please check logfile[${LOGFILE}]!" | tee -a ${LOGFILE}
fi

monitor.sh

#!/bin/sh

cd
if [ -f .bash_profile ]
then
. ./.bash_profile
elif [ -f .profile ]
then
. ./.profile
elif [ -f .bashrc ]
then
. ./.bashrc
fi

#parm1 is program dir
cd ${1}

LOGFILE="../log/monitor.log"
#create dir
LOGPATH=`dirname $LOGFILE`
if [ ! -d $LOGPATH ]
then
mkdir -p $LOGPATH
fi

NOWTIME=`date ‘+%Y%m%d%H%M%S‘`
NEWAGENT="${NOWTIME}agent"
PACKAGENAME=""
PACKAGEPATH=""
exist_package() {
if [ ! -d ../resource ]
then
echo "${NOWTIME} not resource dir"
return 1
fi
if [ ! -d ../resource/package ]
then
echo "${NOWTIME} not resource package dir"
return 1
fi
PACKAGENAME=`ls ../resource/package| grep ‘.tar.gz$‘ |grep -w agent`
PACKAGEPATH=`echo "${PACKAGENAME}" | sed s/.tar.gz//g`
NUM=`ls ../resource/package| grep ‘.tar.gz$‘ |grep -w agent | wc -l`
if [ ${NUM} -eq 1 ]
then
return 0
else
return 1
fi
}

rm_mv_package(){
mv ../resource/package/${PACKAGEPATH}.tar ../resource/package/${PACKAGEPATH}.tar_bak
rm -rf ../resource/package/${PACKAGEPATH}
}

tar_package(){
cd ../resource/package
gzip -df ${PACKAGENAME}
tar -xf ${PACKAGEPATH}.tar
if [ $? -eq 0 ]
then
return 0
else
return 1
fi
}

update_agent(){
echo "${NOWTIME} update_agent begin!" | tee -a ${LOGFILE}
if tar_package;then
cd $1
if [ -f "../resource/package/${PACKAGEPATH}/agent/bin/agent" ]
then
sh stop.sh
mv agent ${NEWAGENT}
cp ../resource/package/${PACKAGEPATH}/agent/bin/agent ./agent
chmod +x agent
sh start.sh
sleep 1
pid=`ps -ef | grep "agent -m" | grep -v "grep"|awk ‘{print $2}‘`
if [ $pid ]
then
echo "${NOWTIME} ${PACKAGENAME} agent start $pid!" | tee -a ${LOGFILE}
rm_mv_package
return 0
else
echo "${NOWTIME} ${PACKAGENAME} agent start failed!" | tee -a ${LOGFILE}
rm_mv_package
mv ${NEWAGENT} agent
sh start.sh
return 1
fi
else
echo "${NOWTIME} ${PACKAGENAME} have not agent!" | tee -a ${LOGFILE}
rm_mv_package
return 1
fi
else
echo "${NOWTIME} tar ${PACKAGENAME} failed!" | tee -a ${LOGFILE}
rm_mv_package
return 1
fi
}

#run
if exist_package; then
if update_agent $1; then
echo "${NOWTIME} ${PACKAGENAME} update_agent success!" | tee -a ${LOGFILE}
else
echo "${NOWTIME} ${PACKAGENAME} update_agent failed!" | tee -a ${LOGFILE}
fi
else
sh start.sh
fi

时间: 2024-08-29 22:19:42

启动和监控脚本的相关文章

系统日志监控脚本,程序关闭和启动功能

系统日志监控脚本,程序关闭和启动功能 最近由于工作原因写了一个关于系统日志监控脚本,监控到某些信息后,脚本中进行程序关闭和启动的功能. 详细内容如下: #!/bin/sh #current date time DATE=`date "+%Y%m%d"` #log file path and name LOGFILE="log/porgram.log.$DATE" #program name PROGRAM="porgram" #program s

mysql和nginx服务是否正常监控脚本

一.监控web服务器和mysql方法 1.监控端口(nginx也相同) 1.1本地监控 netstat -tunlp|grep 3306|wc -l ss -tunlp|grep 3306|wc -l 1.2远程监控 nmap 10.117.33.98 -p 3306|grep open|wc -l echo -e "\n"|telnet 10.117.33.98 3306 2>/dev/null |grep Connected|wc -l 2.监控进程(nginx同) ps -

Dubbo应用启动与停止脚本,超详细解析

本周刚好研究了一下dubbo的启动脚本,所以在官网的启动脚本和公司内部的启动脚本做了一个整理,弄了一份比较通过的Dubbo应用启动和停止脚本.          下面的脚本只应用于配置分离的应用,什么叫做配置分离呢?就是使用maven打包时,借助assemble插件,打一个tar.gz的压缩包.里面有三个目录.bin目录,用来存放启动与停止的脚本,lib目录,用来存放相关依赖的jar包,注意,这里每个jar包都是单独的,而不是一个大的jar包.conf目录,用来存放配置文件,包括dubbo.pr

MySQL的keepalived高可用监控脚本

MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占master的机制的,但是如果我们做了MySQL的keepalived的高可用的时候,就要考虑一种情况的发生,那就是如果机器网卡并没有断,二十由于MySQL服务的不稳定,或者人为的误操作,导致的服务关闭,会引起的结果就是,keepalive并不会切换,因为并不是主master的虚拟ip不存在,而是服务已经停止

linux系统CPU,内存,磁盘,网络流量监控脚本

前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监

tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)

服务器环境:centos7.2 64位 tomcat8.5.6 tomcat 监控功能共需要两个脚本,如下: initMonitor.sh #!/bin/sh #初始化监控脚本相关变量 export tomcat_name=apache-tomcat-8.5.6 export tomcat_home=/usr/local/apache-tomcat-8.5.6 #测试接口访问地址 export webUrl=127.0.0.1:8080/yanglao/sysUserController/sys

oracle监控脚本

简单命令 1.显示服务器上的可用实例:ps -ef | grep smon2.显示服务器上的可用监听器:ps -ef | grep -i listener | grep -v grep3.查看Oracle存档目录的文件系统使用情况:df -h4.统计alter.log文件中的行数:[[email protected] ~]# find / -name alert*5.CRONTAB一个crontab文件中包含有六个字段:分钟 0-59小时 0-23月中的第几天 1-31月份 1 - 12星期几

MySQL慢日志监控脚本实例剖析

公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. #!/bin/bash # # 本脚本用来在指定频率内监控 MySQL 慢日志的变化,并在发生增长时及时报警 # Written by sunsky # Mail : [email protected] # Date : 2014-11-17 10:00:00 # MON_FILE="$2"   # 

ansible-playbook基于role的配置一键安装zabbix客户端以及拉取自定义监控脚本

在IT工作中,您可能会一遍又一遍地执行相同的任务:没有人喜欢重复的任务.通过Ansible,IT管理员可以开始自动化日常任务中的苦差事.自动化解放了管理人员,专注于通过加快应用交付时间和建立在成功文化基础之上,为业务提供更多价值的努力.最终,Ansible为团队提供了他们永远无法获得足够的一件事:时间.让聪明的人专注于聪明的事情. Ansible是一种简单的自动化语言,可以完美地描述IT应用程序基础结构.它易于学习,自我记录,并且不需要毕业级的计算机科学学位来阅读.自动化不应该比它正在取代的任务