L'exécution de processus Java en tant que Service sous Linux

J'ai besoin d'exécuter un processus Java en tant que service (Red Hat 6.4) Linux (Il a besoin pour fonctionner au moment du démarrage et de rester). J'ai la plupart du temps de travail, sauf pour des il ne semble pas le statut correctement dans le "Service de Configuration de la fenêtre".

Pour illustrer, j'ai fait un programme Java simple:

package service;

public class JavaService {

    public static void main(String args[]){

        System.out.println("Starting Java-Service");
        while(true){

            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
            }

            System.out.println("Java-Service is still running..");
        }
    }
}

J'en pot, et de le mettre à l'emplacement suivant: /opt/service/lib

Ensuite, j'ai créé ce script: /opt/service/bin/run_java_service

#!/bin/tcsh
#
# chkconfig: 2345 80 30
# description: java-service Service
setenv JAVA_SERVICE_HOME /opt/service
setenv CLASSPATH $JAVA_SERVICE_HOME/lib/JavaService.jar
setenv SERVICE_PID  `ps aux | grep JavaService | grep -v grep | awk '{print $2}'`;
if ( (stop == $1  || restart == $1)) then
echo "java-service stop";
kill -9 $SERVICE_PID
setenv SERVICE_PID
endif
if ( start == $1 || restart == $1 ) then
if($SERVICE_PID) then
echo "java-service is already running"
else
echo "java-service start";
java service.JavaService&
endif
endif
if (status == $1) then
if($SERVICE_PID) then
echo "java-service (pid $SERVICE_PID) is running...";
else
echo "java-service is stopped";
endif
endif

Ensuite, j'ai créé un lien symbolique dans /etc/rc.d/init.d répertoire et de l'ajouter à la chkconfig:

sudo ln s /opt/service/bin/run_java_service /etc/rc.d/init.d/java-service
sudo chkconfig --add java-service

À ce stade, des commandes comme ce travail comme prévu à partir de la ligne de commande:

sudo service java-service stop
sudo service java-service start
sudo service java-service status

Le problème, c'est que les choses ne sont pas les états d'avancement correctement dans le "Service de Configuration de la boîte de dialogue". Par exemple, dans cette capture d'écran, j'ai cliqué sur le Bouton d'Arrêt" et il apparaît toujours comme "branché".

L'exécution de processus Java en tant que Service sous Linux

Quelle pièce du puzzle qui me manque?

l'utilisateur de commencer le travail et ce que les utilisateurs en cliquant sur arrêter ?
racine commence le travail, et de la racine arrête le travail

OriginalL'auteur mainstringargs | 2013-06-12