I Have this init.d script which I am trying to get to startup with ubuntu however it wont run at startup. It does work when i type "sudo /etc/init.d/couchpotato start" though. Any ideas on how to get it starting at boot?
#! /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
You can try to run this in terminal:
sudo chmod 755 /etc/init.d/couchpotato
sudo update-rc.d couchpotato defaults
================================
And when you want to disable it from running at startup:
sudo update-rc.d -f couchpotato remove
To find out more information do:
man update-rc.d
You might try to use the insserv command. From the "man insserv" command on a 10.10 installation, I can read:
I never could get the supplied init.d script to work. I could run it just fine, but init.d would start couchpotato, but I could never connect to it. I went ahead and created my own dirty script for it. This should work assuming you use the path ~/.couchpotato for your installdir.
from the man: runlevel information in the init.d script LSB comment header is used (..) Such header is required to be present in init.d scripts. See the insserv( manual page for details about the LSB header format.
Example:
The accepted answer assumes that "upstart" is being used to start processes when the system boots. This is not always so. I am using Ubuntu 9.04 Minimal running on a virtual private server and this does not use upstart.
In this case, in order for the system to notice and run the scripts in /etc/init.d you need to run update-rc.d which created symbolic links to your inet.d script in places where the system will look for instructions when it boots up.
Something like this:
The 92 is a sensible value for the priority, delaying the startup of your script until other important stuff is running.
Here are more details about running update-rc.d
If you are not getting any clue why your service is not getting started on boot. However it gets started perfectly fine when you try to start it manually with command
service <your service> start
. Then try redirecting standard output and error output to some file. Which may give you some clue why it is not getting startede.g. inside your script