2010-08-19 21 views
0

J'ai écrit le script init.d qui supposait exécuter le processus Java CLI.
Le problème est que lorsque je l'arrête, j'obtiens [échec] et le processus est toujours en cours d'exécution.
grâcefedora 13 init.d script, ne peut pas s'arrêter

#!/usr/bin/env bash 
# 
# chkconfig: 345 97 03 
# 
# processname: quotes-srv 
# 
# 
# source function library 

. /etc/rc.d/init.d/functions 

NAME=quotes-srv 

start() { 
    echo -n $"Starting $NAME: " 
    daemon +19 java -Dlog4j.configuration="file:/opt/quotes/properties/log4j/log4j.properties" -Dproperties_folder="/opt/quotes/properties/app/" -jar /opt/quotes/trade-0.0.1-SNAPSHOT-jar-with-dependencies.jar & 
touch /var/lock/subsys/$NAME 
} 

stop() { 
    echo -n $"Stopping $NAME: " 
    killproc $NAME 
    echo 
    rm -f /var/lock/subsys/$NAME 
} 

restart() { 
    stop 
    start 
} 

case "$1" in 
    start) 
    start 
    ;; 
    stop) 
    stop 
    ;; 
    restart|force-reload|reload) 
    restart 
    ;; 
    condrestart|try-restart) 
    [ -f /var/lock/subsys/$NAME ] && restart 
    ;; 
    status) 
    status $NAME 

    ;; 
    *) 
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" 
    exit 1 
esac 

exit 0 
+0

Vous auriez probablement plus de chance sur http://www.serverfault.com/ – mjschultz

Répondre

1

killproc prendra fin des programmes dans la liste des processus qui correspondent au nom $ NOM

à proprement parler c'est dans votre cas java.

Si c'est le seul processus java, vous pouvez aller et mettre java dans $ NOM

Si vous exécutez d'autres services de java, vous devez trouver un autre moyen d'arrêter votre processus java, par exemple mettre le PID dans le fichier/var/lock/subsys/$ NAME et ensuite tuer le processus en utilisant le pid.

Sur debian au moins il y a un outil sympa qui aide avec ceci, mais je ne suis pas sûr qu'il existe pour redhat.

+0

Merci, mais le problème est, si je veux obtenir le pid, je reçois une chaîne vide dans la variable RETVAl. daemon java ... RETVAL = $? – fatnjazzy

+0

Je cherchais l'outil: daemontools. Apparemment, il est développé pour fedora: http://directory.fedoraproject.org/wiki/Howto:Daemontools. Vous devez jouer un peu avec les options. Je l'ai utilisé pour une variété de serveurs Java et cela fonctionne vraiment bien. –