2013-05-28 39 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 –