2012-12-04 81 views
0

我正在Tomcat服務器上運行Web應用程序。服務器代碼中存在一個難以檢測到的問題,導致它每天崩潰一次或兩次。有空的時候,我會深入地糾正它。但直到那一天,在重新啓動tomcat(/etc/init.d/tomcat7 restart)的問題情況下,或者基本上重新啓動計算機,現在看來還是相當不錯的解決方案。我想用wget而不是grep或其他東西來檢測服務器的活力,因爲即使tomcat正在運行我的服務可能會失敗。如果Web服務(tomcat7)沒有響應,重新啓動

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. 

或只是stucks說

--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

爲什麼不使用cron的呢?無論如何,igogo爲tomcat + watchdog,並發現以下blog post

應該給你和想法如何解決你的問題。

心連心

0

OK我找到解決下/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正在運行,但在最後的輸出,從而更準確地檢查這個檢查它的。