2012-11-17 92 views
0

我有我的電腦上下載的tomcat(不作爲服務安裝)。 我正在編寫一個升級在tomcat服務器上運行的webapp的腳本。該腳本大致是這樣的:我的bash腳本如何檢測到tomcat完全停止?

  • 停止Tomcat
  • 進行多次升級操作
  • 啓動Tomcat

當執行升級操作,我需要知道Tomcat是完全停止。但是,如果我運行$TOMCAT_HOME/bin/catalina.sh stop,那麼該腳本在tomcat實際停止之前退出,並且如果在tomcat仍在運行時執行升級操作,可能會導致事件崩潰。此外,升級操作可能會很快完成,這可能會導致在關閉完成之前執行tomcat啓動,導致tomcat崩潰。

現在我的解決方案是在關機啓動後等待5秒鐘,但我想知道是否有更優雅的問題解決方案。

+0

不確定。另一個問題比我的要晚,所以如果有的話,這是重複的。其他人的問題是命令不起作用,至少不會持續5分鐘。 –

回答

1

驗證進程是否仍在運行的一種方法是使用其進程ID。根據您的安裝,你應該能夠找到你的Tomcat服務器的進程ID:

/opt/tomcat/catalina.pid 

從理論上講,如果這個文件是空的,那麼該過程應該已經結束,儘管這取決於執行情況和特定情況下(tomcat崩潰?)這可能不是真的。爲了安全起見,您可以使用此文件中找到的pid,並檢查此過程是否仍在運行。

ps -p <pid> 

上述命令將返回的PID,時間和過程的命令,如果它仍然是活動的。

0

另一種選擇是檢查某個端口(Tomcat使用的端口)是否可以綁定。如果你不能綁定在這個端口上,這意味着Tomcat仍在運行。

無論如何,菲利克斯的解決方案更合適,它可能會更好地使用它。我只寫了我的建議,以提供更多的選擇,也不是所有的Tomcat安裝都有catalina.pid(至少默認的不是)。

相關問題