init.d script startup problems

64,793

Solution 1

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.

Solution 2

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

Solution 3

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

Solution 4

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 

Solution 5

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:
64,793

Related videos on Youtube

Sessiz Saat
Author by

Sessiz Saat

Updated on September 17, 2022

Comments

  • Sessiz Saat
    Sessiz Saat over 1 year

    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
    
  • Sessiz Saat
    Sessiz Saat over 13 years
    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."
  • Sessiz Saat
    Sessiz Saat over 13 years
    Ah Brilliant. That did the trick...
  • Pitto
    Pitto over 13 years
    how? just running sudo insserv?
  • Pitto
    Pitto over 13 years
    No luck for me with this suggestion...
  • Pitto
    Pitto over 13 years
    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 :(
  • Sparhawk
    Sparhawk almost 10 years
    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.
  • gatoatigrado
    gatoatigrado over 9 years
    Yesss, thank you so much! I'm not sure about whatever couchpotato is (maybe just an example?) but for my setup, this seemed necessary to make Zoneminder work ... its default rc.d setting of 20 was too low [high priority] for it to start up correctly.