免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8375 | 回复: 9
打印 上一主题 下一主题

[网络相关] 用shell脚本写tomcat守护进程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-22 14:28 |只看该作者 |倒序浏览
内容如下:

#!/bin/bash

TOMCATPATH=/usr/local/tomcat
while (true)  
  do   
        if (ps -ef | grep tomcat | grep -v grep > /dev/null)     
        then         
                sleep 30     
        else        
                data=$(date "+%F %u %H:%M:%S ")
                $TOMCATPATH/bin/startup.sh &> /dev/null &        
                echo "$data tomcat restart again" >> $TOMCATPATH/tomcat.log   
        fi  
  done

现在有的时候可以运行tomcat,有的时候会运行好几个,有的时候根本不能运行。
请大家指点!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-07-22 16:03 |只看该作者
#!/bin/bash
pgrep procname || procname start
把上面文件加入crontab,
*/30 * * * * /bin/bash /path/urscript
大概思路这样吧

论坛徽章:
0
3 [报告]
发表于 2007-07-22 19:16 |只看该作者
我写一个sleep脚本叫fake_tomcat.sh
然后启动
然后把正牌tomcat kill掉...
hoho..
采用pgrep 或者ps -ef|grep 结果是不确定的..

论坛徽章:
0
4 [报告]
发表于 2007-07-23 00:24 |只看该作者
放在/etc/inittab中,进程没了会自动运行,不用循环判断进程是否在运行.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-07-23 00:43 |只看该作者
原帖由 philonis 于 2007-7-22 19:16 发表
我写一个sleep脚本叫fake_tomcat.sh
然后启动
然后把正牌tomcat kill掉...
hoho..
采用pgrep 或者ps -ef|grep 结果是不确定的..

你用pgrep/ps找不到你要找的进程麽?

论坛徽章:
0
6 [报告]
发表于 2007-07-23 09:43 |只看该作者
原帖由 寂寞烈火 于 2007-7-23 00:43 发表

你用pgrep/ps找不到你要找的进程麽?


怀疑是。
进程是
/usr/java/j2sdk1.4.2_08/bin/java -Djava.awt.headless=true -Xms1024m -Xmx1204m -Djava.endorsed.dirs=/usr/local/tomcat/common/endorsed -classpath /usr/java/j2sdk1.4.2_08/lib/tools.jar:/usr/local/tomcat/bin/bootstrap.jar:/usr/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/tomcat -Djava.io.tmpdir=/usr/tomcat/temp org.apache.catalina.startup.Bootstrap start

手动的时候都没问题,grep tomcat 或 java都可以。

论坛徽章:
0
7 [报告]
发表于 2007-07-23 14:28 |只看该作者
if (ps -ef | grep tomcat | grep -v grep > /dev/null)   是用来判断什么啊?我看不明白

论坛徽章:
0
8 [报告]
发表于 2007-07-23 23:42 |只看该作者
原帖由 lzd7807 于 2007-7-23 14:28 发表
if (ps -ef | grep tomcat | grep -v grep > /dev/null)   是用来判断什么啊?我看不明白

判断进程里有没有
/usr/java/j2sdk1.4.2_08/bin/java -Djava.awt.headless=true -Xms1024m -Xmx1204m -Djava.endorsed.dirs=/usr/local/tomcat/common/endorsed -classpath /usr/java/j2sdk1.4.2_08/lib/tools.jar:/usr/local/tomcat/bin/bootstrap.jar:/usr/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/tomcat -Djava.io.tmpdir=/usr/tomcat/temp org.apache.catalina.startup.Bootstrap start

论坛徽章:
0
9 [报告]
发表于 2012-09-15 19:47 |只看该作者
我感觉是tomcat进程在启动中了,但此时脚本判断进程没起来,又启动个新的tomcat。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
10 [报告]
发表于 2012-09-24 11:25 |只看该作者
本帖最后由 rdcwayx 于 2012-09-24 13:48 编辑

做到cronjob 里。比如5分钟,或者10分钟检查一下。

*/5 * * * * /usr/local/tomcat/bin/tomcat_monitor.sh   # 这个按照自己的实际情况更改。

1. 用cron job 的话,就不需要再写个程序来检查你这个监控脚本是否一直在运行。还有个好处是,机器异常重启的话,也可以保证监视脚本会自动运行。
2. 每5分钟查一次状态。 如果没有找到,就启动,并发邮件通知。如果找到一个,就休息。如果找到多个,应该发个警告邮件通知。
3. 还可以加个判断,如果有lock 文件,就放弃检查。这样的话,如果需要deploy 新的更新,就无需手动禁用cronjob.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP