No Ubuntu 11.10, se eu rodar /usr/bin/cserver -c /etc/cserver.conf & , tudo funcionará bem.
Mas se eu executar serviço cserver start ou /etc/init.d/cserver start como fiz em 10.10, não será. Apenas diz "iniciando cServer", e é o último que ouço sobre isso.
Aqui está o 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 $?
Embora eu nunca tenha tido que fazer isso no servidor original, e o sysv-rc-conf o mostrou presente na lista e começando nos níveis corretos, eu tentei manualmente fazer o update-rc.d e ele reclamou de um erro cabeçalho lsb, que me levou a esta pergunta e guia . Então eu mudei o cabeçalho como acima, e aqui está o que parecia antes:
#!/bin/bash
#
#
# chkconfig: 345 99 99
#
# description: cserver init
# processname: cserver
# Source function library.
# . /etc/rc.d/init.d/functions
Agora, há essa linha sobre "Biblioteca de funções de origem", mas esse diretório nem existe e a linha é comentada de qualquer maneira.
Eu verifiquei as permissões e links simbólicos etc no servidor antigo e tudo parece idêntico.
Um pouco aturdido e confuso agora - talvez um par de olhos fresco e mais bem conhecido possa detectar alguma coisa aqui? Obrigado.
UPDATE e EDIT: Obrigado kubankczyk - Eu fui para sua sugestão de copiar outro encontrado o script de inicialização do nginx para ser o mais simples, e acabou com o seguinte:
#!/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
Não tenho certeza se está correto, mas pelo menos inicia o serviço! Obrigado.