How to get this init.d script to start at server restart?

10,672

Solution 1

Make sure your script is added for service management by chkconfig. Use chkconfig --list to see the list and use chkconfig --add scriptname if it's not there. After that configure the runlevels you want it to be called into. I would guess it's 3, 4 and 5 so: chkconfig --level 345 scriptname on.

Solution 2

You should tell us how exactly you are running the script from init.d

But here is a dirty workaround:

Change the line

start)

to

start|'')

This will make it start if there are no parameters passed.

Solution 3

If you want to start a service through command line you can just add in /etc/rc.d/rc.local too for the same instead of creating a service file in init.d.

Share:
10,672
st0rk
Author by

st0rk

Updated on June 23, 2022

Comments

  • st0rk
    st0rk almost 2 years

    I'm following the directions on installing Redis on a production machine (CentOS using chkconfig).

    The example script I was given requires the argument start to actually start it, which it seems init.d does not do (pass arguments).

    The real command that must be run is /etc/init.d/redis_6379 start, but what its actually calling is /etc/inti.d/redis_6379, which simply says use start or stop as an argument

    Therefor, when my server reboots it doesnt actually start redis. What should I do here?

    Here is the initial config

    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    # 
    # chkconfig:   - 85 15
    # description:  Redis is a persistent key-value database
    # processname: redis_6379
    
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    
    case "$1" in
        start)
            if [ -f $PIDFILE ]
            then
                    echo "$PIDFILE exists, process is already running or crashed"
            else
                    echo "Starting Redis server..."
                    $EXEC $CONF
            fi
            ;;
        stop)
            if [ ! -f $PIDFILE ]
            then
                    echo "$PIDFILE does not exist, process is not running"
            else
                    PID=$(cat $PIDFILE)
                    echo "Stopping ..."
                    $CLIEXEC -p $REDISPORT shutdown
                    while [ -x /proc/${PID} ]
                    do
                        echo "Waiting for Redis to shutdown ..."
                        sleep 1
                    done
                    echo "Redis stopped"
            fi
            ;;
        *)
            echo "Please use start or stop as first argument"
            ;;
    esac