Note:

	This document has been written for Red Hat Linux, but apply
	directly to any other Sysv script based system (most linux
	distribution). This document describes an enhanced version
	of the current technology and describe in particular the
	new tags supported by linuxconf.


Writing System V init scripts for Red Hat Linux
===============================================

All System V init scripts are named /etc/rc.d/init.d/
where  is the name of the service.  There must be no
".init" suffix.


Sample Script
=============

#!/bin/bash
#
#	/etc/rc.d/init.d/
#
#	
#	
#
# 

# Source function library.
. /etc/rc.d/init.d/functions



case "$1" in
    start)
	echo -n "Starting  services: "
	
	touch /var/lock/subsys/
	;;
    stop)
	echo -n "Shutting down  services: "
	
	rm -f /var/lock/subsys/
	;;
    status)
	
	;;
    restart)
	
	;;
    reload)
	
	;;
    probe)
	
	;;
    *)
	echo "Usage:  {start|stop|status|reload|restart[|probe]"
	exit 1
	;;
esac


Notes: the restart and reload functions may be (and commonly are)
combined into one test, vis:
    restart|reload)
You are not prohibited from adding other commands; list all commands
which you intend to be used interactively to the usage message.



Functions in /etc/rc.d/init.d/functions
=======================================

daemon [+/-nicelevel] program [arguments] [&]

	Starts a daemon, if it is not already running.  Does
	other useful things like keeping the daemon from dumping
	core if it terminates unexpectedly.

killproc program [signal]

	Sends a signal to the program; by default it sends a SIGTERM,
	and if the process doesn't die, it sends a SIGKILL a few
	seconds later.

	It also tries to remove the pidfile, if it finds one.

pidofproc program

	Tries to find the pid of a program; checking likely pidfiles,
	using the pidof program, or even using ps.  Used mainly from
	within other functions in this file, but also available to
	scripts.

status program

	Prints status information.  Assumes that the program name is
	the same as the servicename.


Tags
====

# chkconfig:   

	Required.   is a list of levels in which
	the service should be started by default.  
	and  are priority numbers.  For example:
	# chkconfig: 2345 20 80
	Read 'man chkconfig' for more information.

# description: 

	Required.  Several lines of description, continued with '\'
	characters.  The initial comment and following whitespace
	on the following lines is ignored.

# description[ln]: 

	Optional.  Should be the description translated into the
	specified language.

# autoreload: true

	Optional.  If this line exists, the daemon checks its
	configuration files and reloads them automatically when
	they change.

# processname:

	Optional, multiple entries allowed.  For each process name
	started by the script, there should be a processname entry.
	For example, the samba service starts two daemons:
	# processname: smdb
	# processname: nmdb

# config:

	Optional, multiple entries allowed.  For each static config
	file used by the daemon, use a single entry.  For example:
	# config: /etc/httpd/conf/httpd.conf
	# config: /etc/httpd/conf/srm.conf

	Optionally, if the server will automatically reload the config
	file if it is changed (but not others, hence the autoreload:
	tag is not specified for the whole file), you can append the
	word "autoreload" to the line:
	# config: /etc/foobar.conf autoreload

# pidfile:

	Optional, multiple entries allowed.  Use just like the config
	entry, except that it points at pidfiles.  It is assumed that
	the pidfiles are only updated at process creation time, and
	not later.  The first line of this file should be the ASCII
	representation of the PID; a terminating newline is optional.
	Any lines other than the first line are not examined.

# probe: true

	Optional, used IN PLACE of autoreload, processname, config,
	and pidfile.  If it exists, then a proper reload-if-necessary
	cycle may be acheived by running these commands:

	command=$(/etc/rd.d/init.d/SCRIPT probe)
	[ -n "$command" ] && /etc/rc.d/init.d/SCRIPT $command

	where SCRIPT is the name of the service's sysv init script.

	Scripts that need to do complex processing could, as an
	example, return "run /var/tmp/