我有在 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/