2013-06-12 19 views
5

Ho bisogno di eseguire un processo Java come un servizio in (Red Hat 6.4) Linux (deve essere eseguito all'avvio e rimanere attivo). Ce l'ho quasi sempre funzionante, tranne che non sembra che lo stato sia corretto nella finestra "Configurazione servizio".Esecuzione del processo Java come servizio in Linux

Per illustrare, ho fatto un semplice programma Java:

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.."); 
     } 
    } 
} 

ho Jarred che fino, e messo in questa posizione:/opt/servizio/lib

Poi, ho creato questo script:/opt/servizio/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 

poi ho creato un link simbolico a questo nella directory /etc/rc.d/init.d e ha aggiunto al chkconfig:

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

A questo punto, i comandi come questo lavoro come previsto dalla riga di comando:

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

Il problema è che le cose non stanno definizione dello stato correttamente nella finestra di dialogo "Configurazione del servizio". Ad esempio, in questo screenshot, ho fatto clic sul pulsante "Stop" e continua a essere visualizzato come "collegato".

enter image description here

Che pezzo del puzzle che mi manca?

+0

quale utente sta avviando il lavoro e cosa gli utenti stanno cliccando? –

+0

root avvia il lavoro e root interrompe il lavoro – systemoutprintln

risposta

2

Si potrebbe provare a utilizzare jsvc da apache. Tomcat lo usa per essere lanciato come servizio.

Problemi correlati