blob: 23868446c3d320fad20a06b21964aa77d0fccb19 (
plain) (
tree)
|
|
#!/bin/sh
#
# Start or stop setiathome, or set up working directory and register
#
# override these variables in ${PREFIX}/etc/setiathome.conf
seti_wrkdir=/var/db/setiathome # primary working directory
seti_bindir=!!SUBDIR!! # exec directory relative to ${PREFIX}
seti_command=setiathome # command name
seti_std_args=-email # command arguments for standard mode
seti_reg_args=-login # command arguments for register mode
seti_user=nobody # user id to run as
seti_nice=1 # nice level to run at
seti_maxprocs=`sysctl -n hw.ncpu` # max. number of processes to start
seti_syslog=daemon.err # syslog facility.level
if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/${0##*/}\$"); then
echo "${0##*/}: Cannot determine PREFIX." >&2
echo "Please use the complete pathname." >&2
exit 64
fi
if [ -f ${PREFIX}/etc/setiathome.conf ]; then
. ${PREFIX}/etc/setiathome.conf
fi
i=${seti_maxprocs}
seti_wrksuff="."
while [ ${i} -gt 1 ]; do
seti_wrksuff="${seti_wrksuff} ${i}"
i=`expr ${i} - 1`
done
case $1 in
start)
for i in ${seti_wrksuff}; do
if [ ! -d ${seti_wrkdir}/${i} ]; then
logger -sp ${seti_syslog} -t ${seti_command} \
"unable to start: ${seti_wrkdir}/${i} is missing."
exit 72
fi
if [ ! -f ${seti_wrkdir}/${i}/user_info.sah ]; then
logger -sp ${seti_syslog} -t ${seti_command} \
"unable to start: please log in to SETI@home first. (${seti_wrkdir}/${i}/user_info.sah is missing.)"
exit 72
fi
done
for i in ${seti_wrksuff}; do
su -fm ${seti_user} -c "\
(cd ${seti_wrkdir}/${i} && \
exec ${PREFIX}/${seti_bindir}/${seti_command} \
${seti_std_args} \
${seti_nice+-nice} ${seti_nice} >/dev/null &)"
echo -n " SETI@home"
done
;;
stop)
killall ${seti_command}
;;
register)
# Create or update primary working directory (in case the uid changed)
mkdir -p ${seti_wrkdir}
chown ${seti_user} ${seti_wrkdir}
chmod u=Xrw,g=Xr,o=Xr ${seti_wrkdir}
if [ -f ${seti_wrkdir}/user_info.sah ]; then
echo " It seems you have already registered with SETI@home. Would you like"
echo -n " to repeat the procedure? [Y/n] "
read a
if [ "X${a}" = "Xn" -o "X${a}" = "XN" ]; then
seti_dontlogin=yes
fi
fi
# No need to register if we've already done so
if [ "X${seti_dontlogin}" != "Xyes" ]; then
su -fm ${seti_user} -c "\
cd ${seti_wrkdir} && \
exec ${PREFIX}/${seti_bindir}/${seti_command} \
${seti_reg_args}"
fi
if [ ${seti_maxprocs} -gt 1 ]; then
echo " Updating additional working directories."
i=${seti_maxprocs}
while [ ${i} -gt 1 ]; do
mkdir -p ${seti_wrkdir}/${i}
chown ${seti_user} ${seti_wrkdir}/${i}
chmod 755 ${seti_wrkdir}/${i}
# Assume the user want's all processes to run with the same registration
rm -f ${seti_wrkdir}/${i}/user_info.sah
ln -sf ../user_info.sah ${seti_wrkdir}/${i}
i=`expr ${i} - 1`
done
fi
;;
*)
echo "usage: ${0##*/} {start|stop|register}" >&2
exit 64
;;
esac
|