[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Sks-devel] FreeBSD init scripts
From: |
Phil Pennock |
Subject: |
[Sks-devel] FreeBSD init scripts |
Date: |
Sat, 14 Feb 2015 08:01:26 -0500 |
On 2015-02-13 at 10:54 -0800, David Benfell wrote:
> On FreeBSD, we seem not to have checkpath, at least in the places
> where I looked. I have tweaked init scripts crafted by--I think--Phil
> Pennock a while ago; the FreeBSD port doesn't include them, and Phil's
> need to be updated and probably worked into something a lot more
> robust.
You should probably start with my current scripts, then; I use these in
a dedicated jail, I switched to using supervise to keep sks alive
(clang-built binary problems) and so I'm using chpst from the runit
Port.
I've not felt the need to chown existing files from my start-up scripts,
because I don't do things like rebuild databases across untrusted data
as the root user: that way lies system compromises. I do have `recover`
available as an init-script command, though, thus `service sks-db
recover` does things as the right user.
-Phil
------------------8< cut here: /etc/sv/sks-db/run >8--------------------
#!/bin/sh
exec service sks-db onestartfg
----------------------------8< cut here >8------------------------------
------------------------8< cut here: sks-db >8--------------------------
#!/bin/sh
# PROVIDE: sks-db
# REQUIRE: DAEMON
# BEFORE: sks-recon
. /etc/rc.subr
name="sks_db"
rcvar=sks_db_enable
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 statsgen startfg"
recover_cmd=sks_db_recover_cmd
rotate_cmd=sks_db_rotate_cmd
statsgen_cmd=sks_db_statsgen_cmd
startfg_cmd=sks_db_startfg_cmd
startfg_precmd=sks_db_start_precmd
load_rc_config $name
: ${sks_db_user="sks"}
: ${sks_db_group="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-5.3"}
PATH="/usr/local/sbin:/usr/local/bin:$PATH"
as_user()
{
/usr/local/sbin/chpst -u $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
}
# Want to be able to pkill as the sks user, based off the pidfile
sks_db__fix_pidfile()
{
chgrp $sks_db_group "$pidfile"
chmod g+r "$pidfile"
}
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/sbin/chpst -u $sks_db_user \
$command $sks_db_flags db
sks_db__fix_pidfile
}
sks_db_startfg_cmd()
{
echo "Starting sks db (in foreground)."
sks_db__do_chdir || return 1
exec /usr/local/sbin/chpst -u $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
}
sks_db_statsgen_cmd()
{
if [ -f /etc/sv/sks-db/supervise/pid ]; then
if [ -f /etc/sv/sks-db/supervise/stat ] && [ $(cat
/etc/sv/sks-db/supervise/stat) = "run" ]; then
# this relies upon us having exec'd sks above, otherwise the pid might be the
wrapper init script
rc_pid=$(cat /etc/sv/sks-db/supervise/pid)
fi
fi
kill -s USR2 $rc_pid
}
required_dirs="${sks_db_chdir}/KDB"
run_rc_command "$1"
----------------------------8< cut here >8------------------------------
----------------------8< cut here: sks-recon >8-------------------------
#!/bin/sh
# PROVIDE: sks-recon
# REQUIRE: DAEMON sks-db
. /etc/rc.subr
name="sks_recon"
rcvar=sks_recon_enable
command="/usr/local/bin/sks"
pidfile=/var/run/sks_recon.pid
extra_commands="clean"
start_cmd=sks_recon_start_cmd
start_precmd=sks_recon_start_precmd
clean_cmd=sks_recon_clean_cmd
load_rc_config $name
: ${sks_recon_user="sks"}
: ${sks_recon_group="sks"}
: ${sks_recon_chdir="/var/sks"}
: ${sks_recon_limits_enable=NO}
: ${sks_recon_limits_args="-U $sks_recon_user"}
PATH="/usr/local/sbin:/usr/local/bin:$PATH"
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_chdir()
{
cd $sks_recon_chdir
if [ $? -ne 0 ]; then
warn "Failed to chdir to $sks_recon_dir"
return 1
fi
return 0
}
sks_recon__fix_pidfile()
{
chgrp $sks_recon_group "$pidfile"
chmod g+r "$pidfile"
}
sks_recon_start_cmd()
{
echo "Starting sks recon."
_sks_chdir || return $?
/usr/sbin/daemon -f -p "$pidfile" \
/usr/local/sbin/chpst -u $sks_recon_user \
$command $sks_recon_flags recon
sks_recon__fix_pidfile
}
sks_recon_clean_cmd()
{
_sks_chdir || return $?
find . -maxdepth 1 -name 'diff-*.txt' -mtime +1w -delete
}
required_dirs="${sks_recon_chdir}/KDB"
run_rc_command "$1"
----------------------------8< cut here >8------------------------------
signature.asc
Description: Digital signature
- [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", David Benfell, 2015/02/11
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Kristian Fiskerstrand, 2015/02/11
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", David Benfell, 2015/02/11
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Kristian Fiskerstrand, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", David Benfell, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Daniel Kahn Gillmor, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Kristian Fiskerstrand, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Daniel Kahn Gillmor, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", Kristian Fiskerstrand, 2015/02/13
- Re: [Sks-devel] recon stops: "2015-02-11 07:09:48 Raising Sys.Break -- PTree may be corrupted: Failure("remove_from_node: attempt to delete non-existant element from prefix tree")", David Benfell, 2015/02/13
- [Sks-devel] FreeBSD init scripts,
Phil Pennock <=
- Re: [Sks-devel] FreeBSD init scripts, Johan van Selst, 2015/02/14
- Re: [Sks-devel] FreeBSD init scripts, Phil Pennock, 2015/02/17