我一直在尝试整夜运行我的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
while [ 1 ]
do
nohup java -Xmx200m -classpath bin server.Main;
done
一旦进程退出,这将重新启动该进程。在你的保存状态退出后,它会自动重新启动。
关于java - 如何在unix中成功杀死java进程并重新启动它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131170/