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".
Che pezzo del puzzle che mi manca?
quale utente sta avviando il lavoro e cosa gli utenti stanno cliccando? –
root avvia il lavoro e root interrompe il lavoro – systemoutprintln