How to get this init.d script to start at server restart?
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.
st0rk
Updated on June 23, 2022Comments
-
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 saysuse 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