如何成功杀死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内部进行关闭。     

要回复问题请先登录注册