【问题标题】:Checking if Java application has succesfully being started init.d script检查 Java 应用程序是否已成功启动 init.d 脚本
【发布时间】:2016-06-06 15:57:57
【问题描述】:

我有一个使用 systemd 调用的 init.d 脚本启动的 spring-boot 休息服务器。一旦服务器启动,脚本就认为它是成功的。这会导致一些问题,例如如果服务器由于端口已在使用等原因而失败,它仍将被视为已成功。我想出了一个解决方案,它在循环中对日志文件的最后几行进行 greps,以确保没有出错并返回错误(如果有),但我认为这有可能引入竞争条件并可能导致意外行为。有没有更好的方法可以使用?

【问题讨论】:

    标签: java spring-boot systemd init.d


    【解决方案1】:

    您可以向 systemd 询问您的应用程序的状态:

     $ systemctl status your-app
    

    或者你可以使用is-active:

    $ systemctl is-active your-app
    

    如果您的应用程序处于活动状态,退出代码将为 0,如果它不处于活动状态,则退出代码将为 0。

    【讨论】:

      【解决方案2】:

      你可以在你的脚本中添加类似下面的内容,它将脚本触发器的所有输出复制(>)到一个文件中,并从哪个 grep 中获取 ERROR

      "触发脚本的命令" >dump.txt findstr /I "ERROR" dump.txt

      "findstr" 查找字符串,"I" 代表不区分大小写并自定义您需要搜索的错误字符串

      【讨论】:

      • 不确定这是否可行,我已经将输出重定向到日志文件。我想总是可以打开文件和 grep
      • 然后使用 findstr /I "ERROR" dump.txt
      • 它附加到日志文件的末尾,所以如果之前的运行出现错误,它会在不应该出现的时候捡起它
      猜你喜欢
      • 2015-01-25
      • 2020-12-03
      • 2019-05-13
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 2015-06-28
      • 2013-10-21
      • 1970-01-01
      相关资源
      最近更新 更多