What is needed for a linux service to be supported by chkconfig?

I am trying to add to the auto start at boottime a linux service through the

chkconfig -add <servicename> 

and I get a message saying

service <servicename> does not support chkconfig

I am using Red Hat Enterprise 4. The script I am trying to add to the autostart at boottime is the following:

#!/bin/sh

soffice_start() {   if [ -x /opt/openoffice.org2.4/program/soffice ]; then
        echo "Starting Open Office as a Service"
        #echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
        /opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard &   else
        echo "Error: Could not find the soffice program. Cannot Start SOffice."   fi }

soffice_stop() {   if [ -x /usr/bin/killall ]; then
        echo "Stopping Openoffice"
        /usr/bin/killall soffice 2> /dev/null   else
        echo "Eroor: Could not find killall.  Cannot Stop soffice."   fi }

case "$1" in  'start')    soffice_start    ;;  'stop')    soffice_stop    sleep 2    ;;  'restart')    soffice_stop    sleep 5  soffice_start    ;;  *)    if [ -x /usr/bin/basename ]; then
        echo "usage: '/usr/bin/basename $0' start| stop| restart"    else
        echo "usage: $0 start|stop|restart"    fi esac

The script must have 2 lines:

# chkconfig: <levels> <start> <stop>
# description: <some description>

for example:

# chkconfig: 345 99 01
# description: some startup script

345 - levels to configure
99 - startup order
01 - stop order

After you add the above headers you can run chkconfig --add <service>.


While katriel has already answered this with the bare minimum needed to create an init script, I think you'd also be well served with looking at /etc/init.d/skeleton and using that as a template on which to base your init script. You'll end up with a much more consistent and readable script.


It sounds like Geo's specific problem has already been solved, but I ran into a similar message while trying to set up a Rails app with sidekiq as a managed service. I'll explain my solution here in case it helps any other newbies like me.

I'm working on a CentOS install, and chkconfig is already set up with several other services like httpd, mysql, and redis. Note that most services need only be enabled on runlevels 3 through 5.

chkconfig --list
> httpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
> mysqld            0:off   1:off   2:on    3:on    4:on    5:on    6:off
> redis-server      0:off   1:off   2:on    3:on    4:on    5:on    6:off
> (etc...)

I needed to add a new script for the sidekiq service, so I grabbed the script at https://gist.github.com/CD1212/5326706, modified it to fit my app's parameters, and saved it at /etc/rc.d/init.d/sidekiq (owned by root like all the other scripts there).

However when I tried to register this new service, I got the chkconfig error:

sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig

After some extra reading I discovered that the priority numbers defined at the top of each chkconfig script must be unique. A clearer error message would have been nice! Another script had shutdown priority level 75, so I changed mine to 76 and tried again. Here's the head of my init script:

#!/bin/bash
#
# sidekiq    Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#

This time, sudo chkconfig --add sidekiq gave no complaint. Then when I ran sudo chkconfig --list sidekiq, the sidekiq service was shown as on for the appropriate runlevels.