Example Linux chkconfig/init Script
From Cliff Pearson’s excellent system administration blog:
<<begin quote>>
From time to time, people want me to create LINUX init scripts for them. I usually just take an existing one for another service and change it up to work for my new application, but most of them have become so long these days that I end up having to hack out a ton of code just to reduce them down to the very basic script I need. I decided to create this very simple template so I wouldn’t have to keep trimming down the more complex scripts that one tends to find in /etc/init.d
these days.
This script is chkconfig compatible, so call it the name of your new service and put it in /etc/init.d
The chkconfig: 235
section indicates the the default runlevels. For instance, if we called this script /etc/init.d/new-service
and ran chkconfig new-service on
, it would be active in runlevels 2,3 and 5.
The 98
and 55
numbers indicate the order of startup and kill. This means that using this tag, the startup symbolic link would be named S98new-service
and the symbolic link to kill the process would be named K55new-service
.
#### SNIP ####
#! /bin/sh # Basic support for IRIX style chkconfig ### # chkconfig: 235 98 55 # description: Manages the services you are controlling with the chkconfig command ### case "$1" in start) echo -n "Starting new-service" #To run it as root: /path/to/command/to/start/new-service #Or to run it as some other user: /bin/su - username -c /path/to/command/to/start/new-service echo "." ;; stop) echo -n "Stopping new-service" #To run it as root: /path/to/command/to/stop/new-service #Or to run it as some other user: /bin/su - username -c /path/to/command/to/stop/new-service echo "." ;; *) echo "Usage: /sbin/service new-service {start|stop}" exit 1 esac exit 0#### /SNIP ####
Obviously change all instances of “new-service” to the name of your actual service… Enjoy!
<< end quote >>
Cliff,
I tried the above snippet, and it works great from the command line.
However, if I look at the Services GUI in Gnome, it flags my service with a triangular ! icon, and reports “This service is dead”.
Is there some documentation on how to fully integrate a custom service with the system-config-services facility?
I’m looking, but can’t find much.
Thanks in advance, and thanks for the code snippet.
Bill Cunningham
Check the response the script is giving to the ‘status’ command. The example script only provides for two commands: start and stop. “status” is also needed for your GUI.