我在Tomcat服务器上运行Web应用程序。服务器代码中存在难以检测的问题,导致它每天崩溃一次或两次。我有空的时候会去挖掘它来纠正它。但直到那天,在一个有问题的情况下重新启动tomcat(/etc/init.d/tomcat7重启)或基本上重启机器似乎也是现在很好的解决方案。我想用wget而不是grep或其他东西检测服务器的活跃性,因为即使tomcat正在运行我的服务可能会关闭。
wget localhost:8080/MyService/
输出
--2012-12-04 14:10:20-- http://localhost:8080/MyService/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2777 (2.7K) [text/html]
Saving to: “index.html.3”
100%[======================================>] 2,777 --.-K/s in 0s
2012-12-04 14:10:20 (223 MB/s) - “index.html.3” saved [2777/2777]
当我的服务到了。和输出
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... failed: Connection refused.
或者在说完
后卡住了--2012-12-04 14:07:34-- http://localhost:8080/MyService/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response...
否则。你能给我一个带有cron作业的shell脚本吗?如果有替代方案,我宁愿不使用cron。
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,我找到了在/etc/rc5.d/下添加脚本的解决方案http://www.linuxforums.org/forum/mandriva-linux/27687-how-make-command-run-startup.html
!/bin/bash
echo "Restarted: " `date` >> /home/ec2-user/reboot.log
sleep 600
while [ 1 ]
do
var=`php -f /home/ec2-user/lastEntry.php`
if [ ${#var} -gt 3 ]
then
echo "Restarting: " `date` >> /home/ec2-user/reboot.log
reboot
fi
sleep 60
done
最后一个查询检查表以查看最近10分钟内是否有任何条目。
<?php
mysql_connect('ip', 'uname', 'pass') or die(mysql_error());
mysql_select_db("db") or die(mysql_error());
$query="SELECT min(now()-time) as last FROM table;";
$result = mysql_query($query)or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['last'];
?>
有更直接的方法可以检查tomcat是否正在运行,但这会检查最后一个输出,以便更准确地检查它。