我需要编写一个外壳脚本来关闭正在运行的.jar,然后在终端中重新打开它。我从来没有写过shell脚本,也不知道从哪里开始。
下面是我用来在终端中运行应用程序的命令。
java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true我正在运行Ubuntu 10.04 LTS。
发布于 2010-12-29 04:45:44
“关闭一个正在运行的.jar”是什么意思?您在Un*x系统上,因此"kill -9“肯定会杀死进程并释放该进程正在使用的所有资源(或者您的Un*x系统不兼容,但我从未见过这样的系统)。
所以,只要您发送kill -9,Java程序,它的所有线程,一切都将完成。没有关闭钩子,什么都没有。就像你拉了电源线一样。
"kill -9“是一种可以接受的杀死正在运行的Java程序的方式吗?Java程序会在被"kill -9'ed“之后轻轻地重启吗?(它应该会很好地重启,但情况并不总是这样)。
如果一个真正的kill是好的,如果你知道.jar总是使用这个命令行启动的,如果你知道只有一个这样的.jar由用户启动,你可以这样做:
#!/bin/bash
kill -9 $(ps aux | grep java | grep dbConvert2 | awk '{print $2}')
java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true你也可以进入java特有的领域,使用像'jps‘这样的“智能”命令,但我更愿意使用强大的Un*x工具,非常感谢:)
发布于 2010-12-30 01:34:55
我以前在这里做过评论,但是这里有一个来自developerworks的关于Java信号处理的interesting document,如果您想继续使用这个方法,它可能会引起您的兴趣。
然而,我仍然相信,就像在任何情况下关闭当前代码模块之外的进程一样,即使是您编写了它,也是通过许多进程间通信机制之一来请求它停止。
https://stackoverflow.com/questions/4549318
复制相似问题