java - 如何从 java 执行 shell 脚本,它会重启 tomcat 并继续运行

标签 java linux unix tomcat

我有在 tomcat 上运行的 java 应用程序。我有 shell 脚本,它会重新启动 tomcat,然后执行其他 unix 命令。因此,当我运行此 shell scrit 时,从我的应用程序(java 代码)开始,一旦 tomcat 重新启动,它就会退出 shell 脚本,并且在 tomcat 重新启动后不会运行 unix 命令。

我知道当我们从 java 运行 shell 脚本时,它由 tomcat 作为父进程运行,当 tomcat 重新启动时它会杀死父进程,因此不会执行 tomcat 重新启动后的命令。

有没有办法在 tomcat 重启后运行 shell 脚本...我尝试使用不同的选项,如 nohup、/bin/sh -c 但它们都不起作用...一旦 tomcat 重新启动脚本死了。

最佳答案

自从 JVM 重新启动后,我认为没有办法让线程保持 Activity 状态。但是,您可以将 load-on-startup 设置为 1(或其他一些非零值)的 servlet。 init() 函数将在 Tomcat 启动时执行。您可以在其中包含其余命令。当然,无论 Tomcat 如何重启,它都会运行。

有关启动时加载的更多信息:http://tutorials.jenkov.com/java-servlets/web-xml.html#load-on-startup

关于java - 如何从 java 执行 shell 脚本,它会重启 tomcat 并继续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21403220/

相关文章:

java - 在 Jetty 9.4.2 中禁用默认错误响应主体

java - App Engine Datastore - 将属性增量增加 2

对增量运算符的使用感到困惑

c - 在 Linux 上用 C 流式传输音频文件

unix - 在 unix 中使用 sed 查找和替换

linux - 如何在 Shell 脚本中添加双引号

java - 为什么线程在不同的运行方法体中表现不同?

java - Lambda 过滤器未按预期工作

java - ycsb加载数据到redis找不到数据

c - 有没有办法将 UTF8 转换为 ISO-8859-1?