Java 如何在init.d上重新启动Jar文件?

Java 如何在init.d上重新启动Jar文件?,java,linux,centos,Java,Linux,Centos,我使用的是CentOS 6.3 64位 我正在使用启动服务器作为服务 #!/bin/sh # chkconfig: 2345 90 10 #description: URL Server # processname: urlovedserver start(){ java -jar /root/BookkServer-0.0.1-jar-with-dependencies.jar } # See how we were called. case "$1" in start) start

我使用的是CentOS 6.3 64位

我正在使用启动服务器作为服务

#!/bin/sh
# chkconfig: 2345 90 10
#description: URL Server
# processname: urlovedserver
start(){
java -jar /root/BookkServer-0.0.1-jar-with-dependencies.jar
}
# See how we were called.
case "$1" in
  start)
   start
   ;;
  *)
   echo "Usage: $0 {start}"
   exit 1
esac

我应该向脚本添加什么,以便它响应“服务urlovedserver重新启动”?我不知道如何停止java服务。

在文件中写入
PID
。当您需要时,可以为kill java进程读取
PID文件

#!/bin/sh
# chkconfig: 2345 90 10
#description: URL Server
# processname: urlovedserver
start(){
java -jar /root/BookkServer-0.0.1-jar-with-dependencies.jar
}
# See how we were called.
case "$1" in
  start)
   start
   ;;
  *)
   echo "Usage: $0 {start}"
   exit 1
esac
start(){
    #run your process in background
    java -jar /root/BookkServer-0.0.1-jar-with-dependencies.jar &
    # write PID
    echo $! > program.pid  
}
现在您可以终止进程:

kill -9 `cat program.pid` #kill java process

一种方法是获取已执行命令的pid(使用
$!
shell变量)将其保存在一个文件中,然后在shell脚本中添加一个stop命令,该命令只会终止从上一个文件读取的java进程。差不多

kill -9 `cat /var/run/myjavaservice.pid`.

然后重新启动将是stop()和start()

而不是使用kill-9PID。我决定使用pkill(或killall…)。