Writing rc.d scripts
From ArchWiki
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