J'ai ce script init.d que j'essaie de démarrer au démarrage avec Ubuntu, mais il ne s'exécutera pas au démarrage. Cela fonctionne quand je tape "Sudo /etc/init.d/couchpotato start" cependant. Des idées sur la façon de commencer à démarrer?
#! /bin/sh
### BEGIN INIT INFO
# Provides: CouchPotato application instance
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of CouchPotato
# Description: starts instance of CouchPotato using start-stop-daemon
### END INIT INFO
############### EDIT ME ##################
# path to app
APP_PATH=/usr/local/sbin/couchpotato
# path to python bin
DAEMON=/usr/bin/python
# startup args
DAEMON_OPTS=" CouchPotato.py -q"
# script name
NAME=couchpotato
# app name
DESC=CouchPotato
# user
RUN_AS=root
PID_FILE=/var/run/couchpotato.pid
############### END EDIT ME ##################
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC"
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
;;
stop)
echo "Stopping $DESC"
start-stop-daemon --stop --pidfile $PID_FILE
;;
restart|force-reload)
echo "Restarting $DESC"
start-stop-daemon --stop --pidfile $PID_FILE
sleep 15
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Vous pouvez essayer d'utiliser la commande insserv. À partir de la commande "man insserv" sur une installation 10.10, je peux lire:
insserv - Enable an installed system init script.
Vous pouvez essayer d’exécuter ceci dans le terminal:
Sudo chmod 755 /etc/init.d/couchpotato
Sudo update-rc.d par défaut
================================
Et lorsque vous souhaitez désactiver son exécution au démarrage:
Sudo update-rc.d -f couchpotato supprimer
Pour en savoir plus, faites:
man update-rc.d
Je n'ai jamais pu faire fonctionner le script init.d fourni. Je pourrais très bien l'utiliser, mais init.d commencerait couchpotato, mais je ne pourrais jamais me connecter. Je suis allé de l'avant et créé mon propre script sale pour cela. Cela devrait fonctionner si vous utilisez le chemin ~/.couchpotato pour votre installdir.
### BEGIN INIT INFO
# Provides: CouchPotato application instance
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Should-Start: $NetworkManager
# Should-Stop: $NetworkManager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of CouchPotato
# Description: starts instance of CouchPotato using start-stop-daemon
### END INIT INFO
USER="youruser"
case "$1" in
start)
echo "Starting $DESC"
/home/micdawg/.couchpotato/CouchPotato.py &
;;
stop)
echo "Stopping $DESC"
PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'`
kill -9 $PID
;;
restart|force-reload)
echo "Restarting $DESC"
PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'`
kill -9 $PID
sleep 15
/home/micdawg/.couchpotato/CouchPotato.py &
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
La réponse acceptée suppose que "upstart" est utilisé pour démarrer les processus au démarrage du système. Ce n'est pas toujours le cas. J'utilise Ubuntu 9.04 Minimal s'exécutant sur un serveur privé virtuel et cela n'utilise pas de démarrage.
Dans ce cas, pour que le système puisse remarquer et exécuter les scripts dans /etc/init.d, vous devez exécuter update-rc.d qui a créé des liens symboliques vers votre script inet.d à des emplacements où le système cherchera des instructions. quand ça démarre.
Quelque chose comme ça:
update-rc.d couchpotato defaults 92
La valeur 92 est une valeur raisonnable pour la priorité, retardant le démarrage de votre script jusqu'à ce que d'autres tâches importantes soient en cours d'exécution.
Voici plus de détails à propos de l'exécution de update-rc.d
les informations de man: LSB sont utilisées (..). Cet en-tête doit obligatoirement être présent dans les scripts init.d. Voir la page de manuel insserv (pour plus d'informations sur le format d'en-tête LSB.
Exemple:
### BEGIN INIT INFO
# Provides: Apache2
# 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
# X-Interactive: true
# Short-Description: Start/stop Apache2 web server
### END INIT INFO
Si vous ne comprenez pas pourquoi votre service ne démarre pas au démarrage. Cependant, il démarre parfaitement lorsque vous essayez de le démarrer manuellement avec la commande service <your service> start
. Ensuite, essayez de rediriger la sortie standard et la sortie d'erreur vers un fichier. Ce qui peut vous donner une idée de la raison pour laquelle cela ne démarre pas
par exemple. dans votre script
case "$1" in
start)
echo "Starting Service "
<your command to start the service > /tmp/bootservice.log 2>&1
;;
stop)
echo "Stopping Service "
<your command to start the service > /tmp/bootservice.log 2>&1
;;
*)
echo "Usage: /etc/init.d/test {start|stop}"
exit 1
;;
esac
exit 0