我需要编写一个shell脚本来关闭正在运行的.jar并在终端中重新打开它。我从来没有写过shell脚本,也不知道从哪里开始。
这是我用来在终端中运行应用程序的命令。
java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true
我正在运行Ubuntu 10.04 LTS。
答案 0 :(得分:1)
你是什么“关闭一个正在运行的.jar”?你使用的是Un * x系统,因此“kill -9”可以防止进程 AND 释放进程正在使用的所有资源(或者你的Un * x系统不符合要求,但我从未见过一个。)
因此,只要发送kill -9,Java程序,其所有线程,所有内容,都将完成。没有关机钩,没有什么。就好像你猛拉电源线一样。
“kill -9”是否可以成为杀死正在运行的Java程序的可接受方式? Java程序被“kill -9”后会轻轻重启吗? (它应该很好地重启,但并非总是如此)。
如果一个真正的杀戮很好,如果你知道.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-idiosynchratic的土地并使用像'jps'这样的“智能”命令但是我宁愿使用强大的Un * x工具,非常感谢:)
答案 1 :(得分:0)
我之前在这里评论过,但这里有一个关于Java信号处理的developerworks的interesting document,如果你想继续这个方法,可能会感兴趣。
但是,我仍然相信,无论如何关闭当前代码模块的异常进程,即使你编写它,也要求它通过许多进程间通信机制之一停止。< / p>