В Ubuntu 11.10, если я запустил / usr / bin / cserver -c /etc/cserver.conf & это будет работать нормально.
Но если я убегу запуск службы cserver или /etc/init.d/cserver start как я сделал 10.10, этого не будет. Там просто написано «запуск cServer», и это последнее, что я слышал об этом.
Вот сценарий:
#!/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 $?
Хотя мне никогда не приходилось делать это на исходном сервере, и sysv-rc-conf показал, что он присутствует в списке и начинается с правильных уровней, я вручную попытался выполнить update-rc.d, и он пожаловался на недопустимый заголовок lsb, что привело меня к этому вопрос и руководство. Итак, я изменил заголовок, как указано выше, и вот как он выглядел раньше:
#!/bin/bash
#
#
# chkconfig: 345 99 99
#
# description: cserver init
# processname: cserver
# Source function library.
# . /etc/rc.d/init.d/functions
Теперь есть строка о «Библиотеке исходных функций», но этот каталог даже не существует, и строка все равно закомментирована.
Я проверил разрешения, символические ссылки и т. Д. На старом сервере, и все кажется идентичным.
Немного ошеломлен и сбит с толку - возможно, пара свежих и более знающих глаз что-то заметит здесь? Спасибо.
ОБНОВЛЕНИЕ и РЕДАКТИРОВАНИЕ: Спасибо kubankczyk - я пошел на ваше предложение о копировании другого, обнаружил, что сценарий запуска nginx самый простой, и в итоге получил следующее:
#!/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
Не уверен, что это правильно, но по крайней мере запускает службу! Спасибо.
Ваш сценарий был написан для chkconfig (например, используемого в Suse Linux), а не для update-rc.d. Лучшее, что вы можете сделать сейчас (если вы не хотите использовать chkconfig), - это выбрать какой-нибудь простой скрипт из вашего /etc/init.d, прочитать его, понять, скопировать и изменить, чтобы запустить cserver.
В частности, убедитесь, что команда "daemon" правильно используется в вашем скрипте вместе с амперсандом &.
Начните устранение неполадок с самого простого сценария. Временно измените ОПЦИИ на ОПЦИИ = "-c /etc/cserver.conf". Протестируйте только чистый скрипт (если это не сработает, service cserver start
не будет работать независимо от того, является ли заголовок LSB или нет):
su -
export DEBIAN_SCRIPT_DEBUG=1
/etc/init.d/cserver start
(редактировать вопрос с результатами)