creating rc.d scripts

Jim Stapleton stapleton.41 at gmail.com
Wed Mar 21 17:52:21 UTC 2007


I created a script in my /usr/local/etc/rc.d directory, but for some
reason it doesn't auto start when I start my machine. I added entries
to the rc.conf that I thought should work, but they did not. On a
related not, my rc.conf file doesn't seem to disable autostart of
sendmail. Could anyone advise me?

Thanks,
-Jim Stapleton

rc.conf:
==================================================
#hostname/ifconfig/defaultrouter omitted
usbd_enable="YES"
linux_enable="YES"
sshd_enable="YES"
ntpdate_enable="YES"
ntpd_enable="YES"

sendmail_disable="YES"
sendmail_enable="NO"
mail_enable="NO"
inetd_flags="-wW -a 192.168.1.84"
syslogd_flags="-b 192.168.1.84"
rpcbind_enable="NO"
sb_server_enable="YES"
sb_enable="YES"
==================================================


Script:
sjss at elrond 17:46:04 (0) ~  > cat /usr/local/etc/rc.d/sb_server
#!/bin/sh

# Start or stop sb_server
# $FreeBSD: ports/mail/py_spambayes/

# PROVIDE: sb_server
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#

name="sb_server"
prefix=/usr/local

# Define these sb_server_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#       /etc/rc.conf.d/gkrellmd
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
sb_server_enable=${sb_server_enable:-"NO"}      # Enable gkrellmd
sb_server_flags=${sb_server_flags:-"-u 8880"}           # Flags to gkrellmd

. /etc/rc.subr

#we keep everyting in /var/sb/db
cd /var/db/sb

if [ "$1" = "start" ]
then
  if [ -e "sb_pid" ] #process already started
  then
    #attempt to see if the process in the PID file is a SB server
    ps -A | grep "$(cat sb_pid)" | grep -v grep | grep sb_server.py
    if [ "$?" != "0" ]
    then
      echo "PID file existed, but had no valid SB PIDs, cleaning"
      rm sb_pid
    else
      echo "PID file found in '${prefix}, server already started"
      exit 1
    fi
  fi
  ERR=0
  name="sb_server"
  rcvar=`set_rcvar`
  /usr/bin/env python ${prefix}/bin/sb_server.py ${sb_server_flags} &
  if [ "$?" -ne "0" ]
  then
    echo "SB Server initialization failed"
    exit 1
  fi
  sleep 2
  ps -A | grep sb_server.py | grep -v "grep" | cut -f2 -d ' ' | tail
-n 1 > sb_pid
  if [ "$?" -ne "0" ]
  then
    echo "SB Server pid file creation failed"
  fi
fi
if [ "$1" = "stop" ]
  then
  if [ -e "sb_pid" ]
  then
    kill $(cat sb_pid)
    if [ "$?" -ne "0" ]
    then
      echo "Could not kill the SB Server process"
      exit 1
    fi
    rm sb_pid
    if [ "$?" -ne "0" ]
    then
      echo "Could not remove PID file but SB Server process killed."
      exit 1
    fi
  else
    echo "No PID file foundin ${prefix}"
    exit 1
  fi
fi


More information about the freebsd-questions mailing list