Question Le service ne démarre pas sur Centos au démarrage


J'ai un service installé pour démarrer le serveur de rapports Jasper au démarrage. Je crois que c'est correctement configuré.

voici le script de démarrage placé dans /etc/init.d/jasperserver

#!/bin/sh
### BEGIN INIT INFO
# Provides:          jasperserver
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start JasperServer at boot time
# Description:       Enable service provided by JasperServer.
### END INIT INFO

JASPER_HOME="/opt/jaspersoft/jasperreports-server-5.5"

case "$1" in
  start)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Starting JasperServer"
      sudo -u ec2-user $JASPER_HOME/ctlscript.sh start
    fi
    ;;
  stop)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Stopping JasperServer"
      sudo -u ec2-user $JASPER_HOME/ctlscript.sh stop

    fi
    ;;
  restart)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Restarting JasperServer"
      sudo -u ec2-user $JASPER_HOME/ctlscript.sh restart
    fi
    ;;
  status)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      sudo -u ec2-user $JASPER_HOME/ctlscript.sh status
    fi
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

Aussi, je lance la commande

sudo chmod +x /etc/init.d/jasperserver

J'ai ensuite exécuté les commandes

sudo chkconfig --add jasperserver
sudo chkconfig jasperserver on

Si je cours:

chkconfig --list  | grep jasper

Je vois:

jasperserver    0:off   1:off   2:on    3:on    4:on    5:on    6:off

Je peux aussi courir:

sudo service jasperserver (start|stop|restart) 

avec succès

Cependant, lorsque je lance un redémarrage, le service ne s'exécute pas. Je me demandais si je pouvais obtenir des informations de journalisation ou permettre à la journalisation de pouvoir y remédier.


Plus de détails

uname -a
Linux jaspersoft.localdomain 3.10.42-52.145.amzn1.x86_64 #1 SMP Tue Jun 10 23:46:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Aussi après avoir ajouté la ligne:

# chkconfig: 2345 70 30

les liens symboliques sont les suivants:

[ec2-user@jaspersoft ~]$ ls -laF /etc/rc.d/rc3.d/*jasper*
lrwxrwxrwx 1 root root 22 Aug  6 08:09 /etc/rc.d/rc3.d/S70jasperserver -> ../init.d/jasperserver*

et de même pour /etc/rc.d/rc[2-5].d/jaspe


6
2017-08-06 07:45


origine


cela peut être utile si vous dites votre version centos, êtes-vous sûr de ne pas avoir rien dans votre journal? - c4f4t0r


Réponses:


Je ne vois pas # chkconfig: - 30 60 dans votre script de démarrage, indiquez le numéro de commande dans la séquence de démarrage (30) ou shutdown (60).

Quels liens symboliques sont mis en place dans /etc/rc[0-6].d/ pour votre service?

IIRC quand aucun n'est défini prio 50 est utilisé. Cela pourrait entraîner une tentative de démarrage de votre service avant le démarrage d'autres dépendances.


4
2017-08-06 08:03





Une installation stock de CentOS aura généralement Defaults requiretty s'installer /etc/sudoers. Cela causera sudo -u $user $command échouer dans un script init au démarrage, car le script ne s'exécute pas nécessairement dans un tty "complet".

Utilement, CentOS fournit un fichier de fonctions init commun (/etc/rc.d/init.d/functions) qui contient le daemon function - un wrapper pour exécuter des programmes avec différentes options (par exemple, utilisateur, fichiers nice, pid, etc.).

Essayez de modifier votre script comme suit:

# Source function library.
. /etc/rc.d/init.d/functions

...

  start)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Starting JasperServer"
      daemon --user $JASPER_USER $JASPER_HOME/ctlscript.sh start
    fi
  ;;

Cela utilisera runuser -s /bin/bash $user pour créer un shell avec les autorisations appropriées afin d'exécuter la commande, en évitant proprement tout problème d'ingérence dans l'environnement ou de sécurité avec su ou sudo.


3
2017-08-06 16:04





J'ai trouvé une solution et je pense que le problème concerne cette ligne:

sudo -u ec2-user ....

C'est le nouveau script:

#!/bin/sh

# chkconfig: 2345 96 14
#
# Start/Stop of JasperReports Server
#

JASPER_HOME="/opt/jaspersoft/jasperreports-server-5.5"

JASPER_USER=ec2-user


case "$1" in
  start)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Starting JasperServer"
      su $JASPER_USER -c "$JASPER_HOME/ctlscript.sh start"
    fi
    ;;
  stop)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Stopping JasperServer"
      su $JASPER_USER -c "$JASPER_HOME/ctlscript.sh stop"
    fi
    ;;
  restart)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      echo "Restarting JasperServer"
      su $JASPER_USER -c "$JASPER_HOME/ctlscript.sh restart"
    fi
    ;;
  status)
    if [ -f $JASPER_HOME/ctlscript.sh ]; then
      su $JASPER_USER -c "$JASPER_HOME/ctlscript.sh status"
    fi
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

0
2017-08-06 08:54