2013-05-28 40 views
0

嗨,以前我在Windows上託管我的應用程序,並編寫了一個服務來檢查RUNNING_PID文件,如果該進程不存在,請啓動一個新的shell並再次啓動該應用程序。在Linux機器上分配/託管應用程序

我目前使用腳本分發應用程序:play clean update dist。所以這創建了我的.jar文件和我的啓動腳本

但是現在我正在嘗試在Linux上安裝系統(Ubuntu,但如果更容易更改)。我打算編寫一個python腳本來做同樣的事情,並將它作爲cron作業來檢查它每15分鐘運行一次。腳本會檢查文件pid,確保它正在運行,然後啓動服務。這是行得通的,但當我啓動一個新的子進程時:./start &它打印出所有播放輸出並等待進程關閉。

有沒有更好的方法來爲playframework創建看門狗類型的服務?

即使我嘗試從shell運行./start &腳本,它也不會啓動新的後臺線程。

回答

1

如果發生崩潰,RUNNING_PID可能會保留在系統中。更好地監視端口監聽與sudo netstat -lpn |grep :9000或啓動腳本的最後一行更改爲類似nohup java $* -cp $classpath play.core.server.NettyServer目錄名稱$ 0 > out.txt &和觀看過程寫作到out.txt與lsof | grep "out.txt"

+0

是的,我認爲端口監聽是一個偉大的想法感謝。不幸的是,儘管這個問題仍然不會導致腳本結束。我想啓動一個不會阻塞原始python腳本的進程。但是啓動NettyServer命令時會鎖定python腳本。如果你輸入以上內容:nohup java $ * -cp $ classpath play.core.server.NettyServer dirname $ 0> out.txt&在bash腳本中它鎖定了當前的終端屏幕。我如何解決這個問題 – user1434177

+0

我認爲,最好是參考與Python有關的文檔,瞭解如何開始一個新線程。例如。 http://softwareramblings.com/2008/06/running-functions-as-threads-in-python.html –