2013-05-28 8 views
0

안녕하세요. 이전에 윈도우에서 응용 프로그램을 호스팅하고 RUNNING_PID 파일을 확인하는 서비스를 작성했습니다. 프로세스가 존재하지 않으면 새로운 쉘을 시작하고 응용 프로그램을 다시 시작하십시오.리눅스 머신에서 응용 프로그램 배포/호스팅

저는 현재 play clean dist를 사용하여 응용 프로그램을 배포하고 있습니다. 그래서 내 .jar 파일과 내 시작 스크립트를 만듭니다.

하지만 이제 리눅스에서 시스템을 설정하려고합니다 (우분투는 더 쉽게 변경 될 것입니다). 나는 파이썬 스크립트를 작성하여 똑같은 일을하고 그것이 15 분마다 실행되는지 확인하기 위해 cron 작업을 할 계획이었다. 스크립트는 pid 파일을 검사하고 실행 중인지 확인한 다음 서비스를 시작합니다. 이것은 작동하지만 시작을위한 새로운 하위 프로세스를 시작할 때 ./start & 모든 재생 출력을 인쇄하고 프로세스가 닫힐 때까지 기다립니다.

playframework 용 워치 독 유형 서비스를 만드는 더 좋은 방법이 있습니까?

쉘에서 ./start & 스크립트를 실행하려고해도 새 배경 스레드가 실행되지 않습니다.

답변

1

충돌이 발생한 경우 RUNNING_PID가 시스템에 남아있을 수 있습니다. 더 나은 sudo netstat -lpn |grep :9000와 포트 수신기에 대한 감상하거나 nohup java $* -cp $classpath play.core.server.NettyServer처럼 뭔가에있는 dirname $ 0 > out.txt &을 시작 스크립트의 마지막 줄을 변경하고 lsof | grep "out.txt"

+0

그래 내가 포트 리스너가 좋은 아이디어 덕분에 생각과 out.txt하는 과정 쓰기를 감시합니다. 불행히도이 문제로 인해 스크립트가 끝나지는 않습니다. 원본 파이썬 스크립트를 차단하지 않는 프로세스를 시작하고 싶습니다. 그러나 NettyServer 명령을 실행하면 Python 스크립트가 잠 깁니다. 위의 내용을 입력하면 : nohup java $ * -cp $ classpath play.core.server.NettyServer dirname $ 0> out.txt & bash 스크립트에서 현재 터미널 화면을 잠급니다. 이 문제를 어떻게 해결할 수 있습니까? – user1434177

+0

새로운 스레드를 시작하는 방법에 대해서는 파이썬 관련 문서를 참조하는 것이 좋습니다. 예 : http://softwareramblings.com/2008/06/running-functions-as-threads-in-python.html –

관련 문제