My rc.d scripts for FreeBSD have grown and grown.  Perhaps others would
find them useful?  Or have suggestions for improvement?

The only non-core dependency which I can spot is "setuidgid", from
sysutils/daemontools.

/etc/rc.conf contains:
  sks_db_enable="YES"
  sks_recon_enable="YES"
  sks_db_limits_enable="YES"
  sks_db_limits_args="-U sks -v 1g"
  sks_recon_limits_enable="YES"
  sks_recon_limits_args="-U sks -v 1g"

rc.d scripts attached.

Regards,
-Phil
#!/bin/sh
#
# $HeadURL: 
http://svn.spodhuis.org/svn/services/trunk/Hosts/redoubt/globnix-etc/rc.d/sks-db
 $
# $Id: sks-db 1810 2010-09-18 05:58:01Z [email protected] $
# pdp

# PROVIDE: sks-db
# REQUIRE: DAEMON
# BEFORE: sks-recon

. /etc/rc.subr

name="sks_db"
rcvar=`set_rcvar`
command="/usr/local/bin/sks"
pidfile=/var/run/sks_db.pid
start_cmd=sks_db_start_cmd
start_precmd=sks_db_start_precmd
extra_commands="recover rotate"
recover_cmd=sks_db_recover_cmd
rotate_cmd=sks_db_rotate_cmd

load_rc_config $name
: ${sks_db_user="sks"}
: ${sks_db_chdir="/var/sks"}
: ${sks_db_limits_enable=NO}
: ${sks_db_limits_args="-U $sks_db_user"}
: ${sks_db_recover_onstart=NO}
: ${sks_db_recover_bin="db_recover-4.7"}
 
as_user()
{
        /usr/local/bin/setuidgid $sks_db_user "$@"
}

sks_db_start_precmd()
{
        if checkyesno sks_db_recover_onstart
        then
                sks_db_recover_cmd
        fi

        if checkyesno sks_db_limits_enable
        then
                eval `/usr/bin/limits -aBe ${sks_db_limits_args}` 2>/dev/null
        else
                return 0
        fi
}

sks_db__do_chdir()
{
        local d="$sks_db_chdir"
        [ ".$1" != "." ] && d="$d/$1"
        cd "$d"
        if [ $? -ne 0 ]; then
                warn "Failed to chdir to $d"
                return 1
        fi
}

sks_db_start_cmd()
{
        echo "Starting sks db."
        sks_db__do_chdir || return 1
        # don't use as_user since daemon invokes it
        /usr/sbin/daemon -f -p "$pidfile" \
                /usr/local/bin/setuidgid $sks_db_user \
                $command $sks_db_flags db
}

sks_db_recover_cmd()
{
        echo "Recovering sks dbs."
        local dir
        for dir in KDB PTree
        do
                echo " ... $dir"
                sks_db__do_chdir $dir || return 1
                as_user $sks_db_recover_bin
        done
        echo "Cleaning up old diffs"
        sks_db__do_chdir || return 1
        find . -name diff-\*.txt -maxdepth 1 -mtime +1w -execdir rm {} \;
        echo "Done."
}

sks_db_rotate_cmd()
{
        echo "Rotating logs."
        sks_db__do_chdir || return 1
        local logdir x
        logdir="OLD-Logs/$(date +%Y%m%d)"
        mkdir -p "$logdir"
        for x in *.log
        do
                echo " ... $x"
                as_user touch "$x.NEW" && \
                mv "$x" "$logdir/$x" && \
                mv "$x.NEW" "$x"
                bzip2 -9 "$logdir/$x" &
        done
        wait
}

required_dirs="${sks_db_chdir}/KDB"
run_rc_command "$1"
#!/bin/sh
#
# $HeadURL: 
http://svn.spodhuis.org/svn/services/trunk/Hosts/redoubt/globnix-etc/rc.d/sks-recon
 $
# $Id: sks-recon 1395 2009-03-21 23:10:39Z [email protected] $
# pdp

# PROVIDE: sks-recon
# REQUIRE: DAEMON sks-db

. /etc/rc.subr

name="sks_recon"
rcvar=`set_rcvar`
command="/usr/local/bin/sks"
pidfile=/var/run/sks_recon.pid
start_cmd=sks_recon_start_cmd
start_precmd=sks_recon_start_precmd

load_rc_config $name
: ${sks_recon_user="sks"}
: ${sks_recon_chdir="/var/sks"}
: ${sks_recon_limits_enable=NO}
: ${sks_recon_limits_args="-U $sks_recon_user"}

sks_recon_start_precmd()
{
        if checkyesno sks_recon_limits_enable
        then
                eval `/usr/bin/limits -aBe ${sks_recon_limits_args}` 2>/dev/null
        else
                return 0
        fi
}

sks_recon_start_cmd()
{
        echo "Starting sks recon."
        cd $sks_recon_chdir
        if [ $? -ne 0 ]; then
                warn "Failed to chdir to $sks_recon_dir"
                return 1
        fi
        /usr/sbin/daemon -f -p "$pidfile" \
                /usr/local/bin/setuidgid $sks_recon_user \
                $command $sks_recon_flags recon
}

required_dirs="${sks_recon_chdir}/KDB"
run_rc_command "$1"
_______________________________________________
Sks-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/sks-devel

Reply via email to