Sur Ubuntu 11.10, si j'exécute /usr/bin/cserver -c /etc/cserver.conf & ça marchera très bien.
Mais si je cours service cserver start o /etc/init.d/cserver start comme je l'ai fait en 10.10, il ne le fera pas. Il dit juste "starting cServer", et c'est la dernière fois que j'en entends parler.
Voici le script :
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: cserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Start and stop the cserver server daemon
# Description: Controls the cserver server daemon
### END INIT INFO
#
set -e
set -u
${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
CSERVERDIR=/usr/bin
PROG=./cserver
OPTIONS=" -c /etc/cserver.conf > /dev/null 2>&1 &"
start() {
echo -n "Starting cServer "
cd $CSERVERDIR
daemon $PROG $OPTIONS
RETVAL=$?
echo
return $RETVAL
}
stop() {
CSERVERPID=$(pidof cserver)
if [ $CSERVERPID ] ; then
echo -n "Stopping cServer "
kill $(pidof cserver)
RETVAL=$?
else
echo "cServer not running"
RETVAL=1
fi
echo
return $RETVAL
}
status() {
CSERVERPID=$(pidof cserver)
if [ $CSERVERPID ] ; then
echo -n "cServer is running"
RETVAL=0
else
echo -n "cServer is stopped"
RETVAL=1
fi
echo
return $RETVAL
}
# See how we were called.
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $?
Bien que je n'aie jamais eu à le faire sur le serveur original, et que sysv-rc-conf l'ait montré présent dans la liste et démarrant aux bons niveaux, j'ai essayé manuellement de faire le update-rc.d et il s'est plaint d'un en-tête lsb invalide, ce qui m'a conduit à ceci question y guide . J'ai donc modifié l'en-tête comme ci-dessus, et voici à quoi cela ressemblait avant :
#!/bin/bash
#
#
# chkconfig: 345 99 99
#
# description: cserver init
# processname: cserver
# Source function library.
# . /etc/rc.d/init.d/functions
Maintenant, il y a cette ligne à propos de "Source function library", mais ce répertoire n'existe même pas et la ligne est commentée de toute façon.
J'ai vérifié les permissions, les liens symboliques, etc. sur l'ancien serveur, et tout semble identique.
Je suis un peu étourdi et confus maintenant - peut-être qu'une paire d'yeux frais et plus informés peut trouver quelque chose ici ? Merci.
MISE À JOUR et ÉDITION : Merci kubankczyk - Je suis allé pour votre suggestion de copier un autre trouvé le script de démarrage de nginx pour être le plus simple, et a abouti à ce qui suit :
#!/bin/sh
### BEGIN INIT INFO
# Provides: cserver
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the cserver server
# Description: starts cserver using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/cserver
NAME=cserver
DESC=cserver
DAEMON_OPTS=" -c /etc/cserver.conf"
#test -x $DAEMON || exit 0
set -e
#set -u
#${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
. /lib/lsb/init-functions
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON || true
sleep 1
start-stop-daemon --start --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" cserver && exit 0 || exit $?
;;
*)
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
exit 1
;;
esac
exit 0
Je ne sais pas si c'est correct, mais au moins ça démarre le service ! Merci.