java - 如何在unix中成功杀死java进程并重新启动它?

标签 java unix process centos kill

我一直在尝试整夜运行我的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/

相关文章:

java - 将哈希函数从 php 重写为 java - 其他结果

java - Spring 集成 pubsub 与 Spring amqp RabbitMQ pubsub

java - Jpanel倒计时1小时?

linux - 由于权限问题,在 Windows 中使用 ssh 进行 git 克隆失败

c# - 是什么原因导致此访问被拒绝错误?

c - 如何在 SIGINT 上仅终止前台子进程?

java - 编译证书验证程序时出错

c - C题中的多线程编程

linux - 截断的查找 ./command

c - 先执行父进程再执行子进程,反之亦然