如何解决如何成功杀死Java进程并在UNIX中重新启动它?
| 我一直试图在夜间运行我的Java程序,但有时需要重新启动它以保存其进度并完全重新引导计算机。几个小时后,我让程序保存了进度并执行了一些重启文件以重启程序。void restartServer() {
try {
Runtime rt = Runtime.getRuntime();
rt.exec(\"./restart.bat\");
} catch (java.io.IOException err) {
logError(err.getMessage());
}
}
在restart.bat中,我有:
echo Restarting Server
killall -9 java
sleep 2;
nohup java -Xmx200m -classpath bin server.Main;
但是,它不起作用。它说:
[root@linode java]# ./restart.bat
Restarting Server
: no process killed
: command not found 3:
nohup: appending output to `nohup.out\'
: command not found 4:
[root@linode java]#
为什么说在运行Java进程时没有进程被杀死?为什么说找不到命令?它也不会重新启动程序。
解决方法
把
#!/bin/sh
或类似的东西放在restart.bat
的第一行怎么样
顺便说一句,“ 5”是在Linux系统上扩展的极差选择。
,不必从服务器本身启动应用程序,而是可以执行以下脚本:
#!/bin/sh
while [ 1 ]
do
nohup java -Xmx200m -classpath bin server.Main;
done
退出后,它将重新启动该过程。在您的保存状态后,只需退出,它将自动重新启动。
,这样的中间进程杀死JVM是否安全?如果没有,您可以考虑使用JMX bean检查程序状态并从JVM内部进行关闭。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。