Difference between revisions of "Initscripts/Writing rc.d scripts"

From ArchWiki
Jump to: navigation, search
m
m (Naming scheme)
Line 1: Line 1:
 
==Naming scheme==
 
==Naming scheme==
 
+
The name of the rc.d script should follow the name of the executable, not the name of the package. It must reflect what it's going to do.
  
 
==Requirements==
 
==Requirements==

Revision as of 11:27, 5 December 2008

Naming scheme

The name of the rc.d script should follow the name of the executable, not the name of the package. It must reflect what it's going to do.

Requirements

If a daemon accepts arguments, the script must have its equivalent in /etc/conf.d.


Example

A proper example for tftpd:

/etc/conf.d/tftpd:

TFTPD_ARGS="-l -s /var/tftpboot -c"

/etc/rc.d/tftpd

#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
TFTPD_ARGS=
[ -f /etc/conf.d/tftpd ] && . /etc/conf.d/tftpd
PID=`pidof -o %PPID /usr/sbin/in.tftpd`
case "$1" in
 start)
   stat_busy "Starting TFTPD"
   [ -z "$PID" ] && /usr/sbin/in.tftpd ${TFTPD_ARGS}
   if [ $? -gt 0 ]; then
     stat_fail
   else
     add_daemon in.tftpd
     stat_done
   fi
   ;;
 stop)
   stat_busy "Stopping TFTPD"
   [ ! -z "$PID" ]  && kill $PID &> /dev/null
   if [ $? -gt 0 ]; then
     stat_fail
   else
     rm_daemon in.tftpd
     stat_done
   fi
   ;;
 restart)
   $0 stop
   $0 start
   ;;
 *)
   echo "usage: $0 {start|stop|restart}"  
esac
exit 0