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

From ArchWiki
Jump to: navigation, search
m (Naming scheme)
m (Requirements)
Line 3: Line 3:
  
 
==Requirements==
 
==Requirements==
If a daemon accepts arguments, the script must have its equivalent in /etc/conf.d.
+
[*] If a daemon accepts arguments, the script must have its equivalent in /etc/conf.d.
 
+
[*] The rc.d script must have at least three methods, being start, stop and restart.
  
 
==Example==
 
==Example==

Revision as of 11:29, 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. [*] The rc.d script must have at least three methods, being start, stop and restart.

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