【问题标题】:Distributing/hosting application on linux machine在 Linux 机器上分发/托管应用程序
【发布时间】:2013-05-30 13:30:06
【问题描述】:

您好,之前我在 Windows 上托管我的应用程序并编写了一个服务来检查 RUNNING_PID 文件,如果该进程不存在,则启动一个新的 shell 并再次启动应用程序。

我目前使用脚本分发应用程序:play clean update dist.所以这会创建我的 .jar 文件和我的启动脚本

但现在我正在尝试在 linux 上设置系统(ubuntu,但如果更容易会改变)。我正计划编写一个 python 脚本来做同样的事情,并让它成为一个 cron 工作来检查它每 15 分钟运行一次。该脚本将检查文件 pid,确保它正在运行,然后启动服务。这是可行的,但是当我启动一个新的启动子进程时:./start & 它会打印出所有播放输出并等待进程关闭。

有没有更好的方法来为 playframework 创建看门狗类型的服务?

即使我尝试从 shell 运行 ./start & 脚本,它也不会启动新的后台线程。

【问题讨论】:

    标签: playframework playframework-2.0


    【解决方案1】:

    在崩溃的情况下,RUNNING_PID 可能会保留在系统中。最好使用sudo netstat -lpn |grep :9000 监视端口侦听器,或者将启动脚本的最后一行更改为nohup java $* -cp $classpath play.core.server.NettyServer dirname $0> out.txt & 并使用lsof | grep "out.txt" 监视写入out.txt 的进程

    【讨论】:

    • 是的,我认为端口监听器是个好主意,谢谢。不幸的是,尽管这个问题仍然不会导致脚本结束。我想启动一个不会阻止原始 python 脚本的进程。但是当启动 NettyServer 命令时,它会锁定 python 脚本。如果您键入以上内容: nohup java $* -cp $classpath play.core.server.NettyServer dirname $0> out.txt & 在 bash 脚本中它会锁定当前终端屏幕。我该如何解决这个问题
    • 我认为,最好参考 Python 相关文档来了解如何启动新线程。例如。 softwareramblings.com/2008/06/…
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多