Java ubuntu shell脚本重启jar

Java ubuntu shell脚本重启jar,java,ubuntu-10.04,shell,Java,Ubuntu 10.04,Shell,我需要编写一个shell脚本,关闭正在运行的.jar并在终端中重新打开它。我从来没有写过shell脚本,也不知道从哪里开始 下面是我用来在终端中运行应用程序的命令 java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true 我正在运行Ubuntu10.04 LTS。关闭running.jar你能做什么?您使用的是Un*x系统,因此“kill-9”可以保证杀死进程,并释放进程

我需要编写一个shell脚本,关闭正在运行的.jar并在终端中重新打开它。我从来没有写过shell脚本,也不知道从哪里开始

下面是我用来在终端中运行应用程序的命令

java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true
我正在运行Ubuntu10.04 LTS。

关闭running.jar你能做什么?您使用的是Un*x系统,因此“kill-9”可以保证杀死进程,并释放进程正在使用的所有资源(或者您的Un*x系统不兼容,但我从未见过)

所以只要你发送一个kill-9,Java程序,所有的线程,所有的事情,都会完成。没有关机挂钩,什么都没有。就像你拉断了电源线一样

“kill-9”是否是您可以接受的终止正在运行的Java程序的方法?Java程序在被“杀死9”后会轻轻地重新启动吗?(应该很好地重新启动,但情况并非总是如此)

如果一个真正的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特有领域,使用“smart”命令,如“jps”,但我更愿意使用功能强大的Un*x工具,非常感谢:)

我以前在这里发表过评论,但如果您希望继续使用此方法,这里有一篇developerworks关于java信号处理的文章


然而,我仍然相信,与关闭当前代码模块之外的进程(即使是您编写的)的任何情况一样,通过许多进程间通信机制之一要求它停止。

注意,这并不是在生命关键型系统上使用的防弹措施。这只是一个可以做什么的例子……这个系统确保200多名员工有能力工作,有没有100%可靠的方法?@JustinY17 SpoonBender试图说的是,这将在没有任何警告或任何事情的情况下停止您的流程。我同意他的观点(顺便说一下(+1)-更好的方法是以某种方式向这个程序传递一条消息,使它自动关闭。有一个脚本,等待它发生,然后重新启动它。你可以考虑一些类似于 MunIT < /C>或<代码> NigiOS < /Cord>来监视这个进程是否正在执行——如果它被杀死,这些将重启它。@ NeN指:(和OP)BTW,我认为有一个信号可以用SIGKEY发送,它被java程序正确捕获,并且可以用来“干净”。关闭应用程序。因此,也许更高级的脚本可以首先发送I'd-like-you-to-cleanly-shutdown信号,然后等待几秒钟,如果Java程序没有干净地退出,则发送kill-9。当然,像您建议的那种真正的监控解决方案会更好:)