comment creer un script de demarrage pour gkrellmld?

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

comment creer un script de demarrage pour gkrellmld?

Messagepar pamplemousse » 01 Mai 2004 12:55

Bonjour,

je n'ai jamais touche a un seul script Linux de ma vie. J'utilise Gkrellmd pour avoir un oeil sur mon serveur, mais a chaque que je redemarre mon serveur je dois relancer gkrellmd a la main. Je tente donc de creer un script de demarrage. J'ai pique un script de ez-ipupdate et j'ai remplace les commandes comme ceci:

Code: Tout sélectionner
# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
RETVAL=0
prog="gkrellmd"

start() {
  # Start daemons.
  if [ -n "`/sbin/pidof gkrellmd`" ]; then
    echo -n $"$prog: already running"
    return 1
  fi
  echo -n $"Starting $prog: "
  #nice -20 gkrellmd
  #gkrellmd
  daemon gkrellmd
  RETVAL=$?
  usleep 100000
  if [ -z "`/sbin/pidof gkrellmd`" ]; then
    # The child processes
    # have died after
    # fork()ing, e.g.
    # because of a
    # broken
    # config file
    RETVAL=1
  fi
  [ $RETVAL -ne 0 ] && failure $"$prog startup"
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gkrellmd && success $"$prog startup"
  echo
  return $RETVAL
}

stop() {
  # Stop daemons.
  echo -n $"Shutting down $prog: "
  killproc gkrellmd
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/gkrellmd
  return $RETVAL
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    stop
    start
    RETVAL=$?
    ;;
  status)
    status gkrellmd
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit $RETVAL



La commande status et stop ont l'air de marcher. Quand je la commande start, j'ai le message:
Code: Tout sélectionner
Démarrage de gkrellmd :


Et puis ca reste comme ca. Ca attend. Ou est ma faute? J'ai juste creer un fichier /etc/init.d/gkrellmd-service contenant les lignes de codes que je viens de decrire. Ai-je oublie un truc (genre declarer gkrellmd-service dans un fichier de conf)?

Merci.
Avatar de l’utilisateur
pamplemousse
Second Maître
Second Maître
 
Messages: 32
Inscrit le: 29 Oct 2003 01:00

Messagepar sibsib » 01 Mai 2004 15:02

Salut,

Le système de démarrage par service est un peu compliqué.

(Je me démerde généralement avec des scripts plus simple, mais c'est moins beau, j'ai pas OK en vert ou ECHOUE en rouge ;-) )

Notamment, pour y revenir, il y a une liaison entre le nom du service et le nom du script.
Je ne crois pas que çà puisse marcher si ton script s'appelle
gkrellmd-service
et ton fichier de lock juste gkrellmd

Juste une piste, comme çà...

A+,
Pascal
Sibsib, admin heureux d'un petit SME !!!
- SME 8.0 beta 6 dans une VM :-)
- ESXI 4.1 sur hardware noname
Ma petite page sur SME
Avatar de l’utilisateur
sibsib
Amiral
Amiral
 
Messages: 2368
Inscrit le: 11 Mai 2002 00:00
Localisation: France - région parisienne

Messagepar pamplemousse » 02 Mai 2004 12:03

Bonjour,

j'ai reussi a le faire marcher. Tout d'abord, gkrellmd ne rend pas la main quand on l'execute. Donc il suffit de faire "daemon gkrellmd&" pour que l'execution ne se bloque pas. Ensuite, effectivement, il faut que le script de demarrage et le fichier de lock portent le meme nom. Finalement, pour etre sur que GKrellmd n'utilise pas trop de CPU, j'ai rajoute un "nice -20" et j'ai fait ca comme script final:
Code: Tout sélectionner
#!/bin/sh
#
# gkrellmd-service         Start/Stop the Gkrellm daemon.
#
# chkconfig: 2345 40 60

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

# See how we were called.
RETVAL=0
prog="gkrellmd"

start() {
  # Start daemons.
  if [ -n "`/sbin/pidof gkrellmd`" ]; then
    echo -n $"$prog: already running"
    return 1
  fi
  echo -n $"Starting $prog: "
  daemon nice -20 gkrellmd&
  RETVAL=$?
  if [ -z "`/sbin/pidof gkrellmd`" ]; then
    # The child processes
    # have died after
    # fork()ing, e.g.
    # because of a
    # broken
    # config file
    RETVAL=1
  fi
  [ $RETVAL -ne 0 ] && failure $"$prog startup"
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gkrellmd-service && success $"$prog startup"
  echo
  return $RETVAL
}

stop() {
  # Stop daemons.
  echo -n $"Shutting down $prog: "
  killproc gkrellmd
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/gkrellmd-service
  return $RETVAL
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    stop
    start
    RETVAL=$?
    ;;
  status)
    status gkrellmd
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit $RETVAL


Maintenant je peux lancer "service gkrellmd-service start".
Pour le demarrage et l'arret automatiques lors de reboot, je n'ai pas utilise chkconfig (je n'ai donc pas modifie la ligne "# chkconfig: 2345 40 60". J'ai tout fait a la main.

Pour un demarrage automatique, j'ai fait un lien symbolique de mon script dans le repertoire /etc/rc7.d:
Code: Tout sélectionner
cd /etc/rc7.d
ln -s /etc/init.d/gkrellmd-service S99gkrellmd-service

Je suppose (d'apres des posts parlant de scripts) que le 99 dit qu'il sera le dernier script a etre lance au demarrage. Pour l'arret auto, un lien symbolique dans les repertoires /etc/rc0.d et /etc/rc6.d:
Code: Tout sélectionner
cd /etc/rc0.d
ln -s ../init.d/gkrellmd-service K15gkrellmd-service
cd /etc/rc6.d
ln -s ../init.d/gkrellmd-service K15gkrellmd-service

Pareil, j'imagine que le 15 signifie qu'il sera parmi les premiers a etre arretes.

Voila, j'espere que ca en aidera plus d'un.
Avatar de l’utilisateur
pamplemousse
Second Maître
Second Maître
 
Messages: 32
Inscrit le: 29 Oct 2003 01:00


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron