我的服務器是使用tomcat的,時不時tomcat的進程會突然結束掉,不知道為什么,從日志上看也沒有任何可疑之處,貌似就這樣突然沒了,接下來的日志都是重新啟動tomcat之后打印的了。原因找不到,但要找變通方法,不要出了問題后總要上服務器去自己重啟tomcat。我打算利用系統的cron服務來自動啟動tomcat,很簡單,大約1分鍾檢查一次tomcat的進程,如果沒有,就啟動之,腳本如下:
#!/bin/bash export JRE_HOME=/usr/local/jre if [ `ps -ef | egrep 'tomcat' | egrep -v egrep | wc -l` -gt 0 ]; then exit 1 fi echo `date`" tomcat restart" >> ~/shell/tomcat_restart.log /usr/local/tomcat/bin/startup.sh
寫這個腳本的時候千萬注意:空格不要亂加!shell編程和別的編程不太一樣,空格有特殊含義。腳本在啟動tomcat的時候,會打印一個log,到~/shell/tomcat_restart.log中,其中包括了一個時間信息,方便我去查找原因(雖然我現在還是找不到原因)。
接下來就是配置crontab。
$crontab -e
然后編輯內容為(假如你的shell文件保存在~/shell/check_and_start_server.sh):
* * * * * ~/shell/check_and_start_server.sh
保存並退出crontab的編輯,然后啟動cron服務:
/etc/init.d/crond start
這樣一來,每一分鍾,cron服務就會執行一次檢查。啟動tomcat大約需要10秒鍾,所以最壞的情況是你的服務器可能會中斷1分鍾多一點的時間(考慮服務器是在14:20:01秒退出的,cron服務剛檢查過,下次檢查是14:21:00,這時候啟動tomcat,大約到14:21:10這樣啟動完成)。