Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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
share|improve this question
add comment

5 Answers 5

up vote 2 down vote accepted

You might try to use the insserv command. From the "man insserv" command on a 10.10 installation, I can read:

insserv - Enable an installed system init script.
share|improve this answer
    
Ah Brilliant. That did the trick... –  Will Oct 27 '10 at 14:15
2  
how? just running sudo insserv? –  Pitto Jan 2 '11 at 20:54
    
I get the "insserv: warning: script 'K20acpi-support' missing LSB tags and overrides The script you are attempting to invoke has been converted to an Upstart job, but lsb-header is not supported for Upstart jobs" Error :( –  Pitto Jan 3 '11 at 9:07
    
Yes, this answer needs more details. From man insserv: "insserv is a low level tool used by update-rc.d… It is not recommended to execute insserv directly… update-rc.d is the recommended interface for managing init scripts." The other answer suggesting sudo update-rc.d couchpotato defaults seems preferable. –  Sparhawk Jul 17 at 10:34
add comment

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

share|improve this answer
    
I've already chmod-ed it with a+x and update-rc.d. I get "System start/stop links for /etc/init.d/couchpotato already exist." –  Will Oct 27 '10 at 13:08
    
No luck for me with this suggestion... –  Pitto Jan 2 '11 at 21:26
add comment

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:

### 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 
share|improve this answer
add comment

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:

update-rc.d couchpotato defaults 92

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

share|improve this answer
add comment

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.

### 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
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.