java可以在solaris中调用脚本重启java吗?

发布于 2024-07-17 06:11:00 字数 296 浏览 4 评论 0原文

我们有一个运行 web 应用程序的 jboss 应用程序服务器。 我们需要在 UI 中的某个位置实现一个“重新启动”按钮,使整个应用程序服务器重新启动。 我们的简单实现是使用 restart 命令调用 /etc/init.d 脚本。 这将关闭我们的应用程序服务器然后重新启动它。

但是,当 java 进程关闭时,运行重新启动脚本的子进程也会在到达脚本中再次启动应用程序服务器的位置之前终止。

我们尝试了添加“&”的变体 到调用脚本的地方,但这没有帮助。 是否有一些地方可以触发脚本并在不终止脚本进程的情况下死亡?

We have a jboss application server running a webapp. We need to implement a "restart" button somewhere in the UI that causes the entire application server to restart. Our naive implementation was to call our /etc/init.d script with the restart command. This shuts down our application server then restarts it.

However, it appears that when the java process shuts down, the child process running the restart scripts dies as well, before getting to the point in the script where it starts the app server again.

We tried variations on adding '&' to the places where scripts are called, but that didn't help. Is there some where to fire the script and die without killing the script process?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美人骨 2024-07-24 06:11:01

尝试使用 nohup 命令在通过 Java 执行的脚本中运行某些内容。 也就是说,如果您从 Java 执行的脚本当前运行以下内容:

/etc/init.d/myservice restart

则将其更改为执行以下操作:

nohup /etc/init.d/myservice restart

另外,请确保 Java 进程不会拦截 stdin、stdout 或 stderr。 这可能会导致问题。 因此,也许可以尝试这个(假设是 bash 或 sh):

nohup /etc/init.d/myservice restart >/dev/null 2>&1

Try using the nohup command to run something from within the script that you execute via Java. That is, if the script that you execute from Java currently runs this:

/etc/init.d/myservice restart

then change it to do this:

nohup /etc/init.d/myservice restart

Also, ensure that you DO NOT have stdin, stdout, or stderr being intercepted by the Java process. This could cause problems, potentially. Thus, maybe try this (assuming bash or sh):

nohup /etc/init.d/myservice restart >/dev/null 2>&1
梦中的蝴蝶 2024-07-24 06:11:01

在重新启动脚本中设置信号处理程序以忽略带有陷阱的信号:

trap "" 2 #  ignore SIGINT
trap "" 15 # ignore SIGTERM

执行此操作后,您需要在需要时使用其他信号(可能是 SIGKILL)终止重新启动脚本。

Set your signal handlers in the restart script to ignore your signal with trap:

trap "" 2 #  ignore SIGINT
trap "" 15 # ignore SIGTERM

After doing this, you'll need to kill your restart script with some other signal when needed, probably SIGKILL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文