#!/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 address@hidden $ # 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"