1,描述
我们需要写一个进程监控的脚本,目的是检测tomcat进程是否停掉,如果挂了,自动拉起,所以我们写了如下的脚本,参考了一些资料,希望对有需要的人有所帮助。
#!/bin/bash
echo "Start"
URL="http://127.0.0.1/###/"
curlit()
{
#echo "??"
curl --connect-timeout 15 --max-time 20 --head --silent "$URL" | grep '200'
# 上面的15是连接超时时间,若访问localhost的HTTP服务超过15s仍然没有正确响应200头代码,则判断为无法访问。
}
doit()
{
if ! curlit; then
# 如果localhost的apache服务没有正常返回200头,即出现异常。执行下述命令:
# echo "TD"
sleep 20
#top -n 1 -b >> /var/log/log.log
kill `ps -ef|grep java|grep -v grep |awk '{print $2}'` > /dev/null 2>&1
# 这条语句中ps -ef|grep java|grep -v grep为查询进程中java进程同时排除本身语句,用awk找到第二列信息,返回状态扔到黑洞中。
sleep 2
cd /tomcat-6.0.29/bin/
/bin/sh startup.sh
#echo "EN"
echo $(date) “Tomcat Restart” >> /var/log/log.log
# 写入日志
sleep 60
# 重启完成后等待,然后再次尝试一次
if ! curlit; then
# 如果仍然无法访问,则:
echo "@"
echo $(date) “Failed!” >> /var/log/log.log
# 写入apache依然重启失效的日志
fi
sleep 180
fi
}
sleep 3
# 运行脚本后才开始正式工作(防止重启服务器后由于tomcat还没开始启动造成误判)
# 主循环体
doit
二、把mytt.sh文件放到root目录下,并修改权限为可执行文件。
三、在控制台上输入以下命令
crontab –e
四、按i键编辑这个文本文件,输入以下内容,每隔5分钟重启tomcat
*/5 * * * * /root/mytt.sh
按esc键退出编辑,输入wq回车保存
五、启动定时服务
[root@]# service crond stop
[root@]# service crond start
六、乱码问题
手工重启与默认系统任务自动重启的字符集是不一样的。在jsp中加入<%=System.getProperty( "file.encoding")%>,可以发现系统自动重启与手工自动重启结果不一样,自动重启打印的结果是ANSI_X3.4-1968,手工重启打印的是GB18030.
作者的项目中使用了volicity生成页面,自动重启后生成的页面就会出现乱码。在tomcat的bin下面找到catalina.sh,在里面加上“CATALINA_OPTS=-Dfile.encoding=GB18030”就可以解决这个问题。
linux tomcat守护进程
猜你喜欢
转载自tw-loverr.iteye.com/blog/2234790
今日推荐
周排行