我正在尝试使用下面的代码重新启动一个应用程序(它支持一个重新启动按钮)。但是不会重新启动。
def process = "sleep 5s && sudo service $appname restart".execute()
process.waitForOrKill(2000)
System.exit(0)
一些相关细节:
- 从 here 获得基本思想
- 引号中的命令适用于 命令行没有错误。请注意,该应用程序是使用 服务包装器
- 记录确认 $appname 正确解析为 服务
- sleep 的原因是为了避免我们尝试 在应用程序运行时重新启动
- 如果我删除 System.exit 语句,重启仍然不会发生
- “waitForOrKill”是选项的替代品 这将要求应用程序等待该过程完成, 这没有意义,因为该过程会重新启动应用程序。它告诉应用程序重启过程在 2 秒后失败
- sudo 配置:NOPASSWD 是 为 chadmin 帐户添加,该帐户是运行该应用程序的帐户。 它只是为服务命令添加的。
- 额外的 Linux 日志记录可能会有所帮助...这不是我熟悉的领域。系统日志中没有出现问题
最佳答案
弄清楚了,关键是要确保 waitForOrKill 设置足够大以完成该过程。事后看来很明显。
关于linux - 以编程方式重启 Grails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549497/