#!/bin/sh /etc/rc.common USE_PROCD=1 BOINCEXE_NAME=boinc_client BOINCDIR=/opt/boinc/ BOINCUSR=boinc BOINCEXE_OPTS="--check_all_logins --redirectio --dir $BOINCDIR" PID_FILE="var/run/$BOINCEXE_NAME.pid" start_service() { # First Check that BOINCDIR exists... if ! [ -d "$BOINCDIR" ]; then if ! mkdir -p $BOINCDIR 2>/dev/null ; then echo "ERROR: $BOINCDIR doesn't exist and couldn't be created" return 1 fi fi # ... and that it is accessible by boinc BOINCDIR_OWNER="$(ls -ld $BOINCDIR | awk '{print $3}')" if [ "$BOINCUSR" != "$BOINCDIR_OWNER" ] ; then chown -R $BOINCUSR:$BOINCUSR $BOINCDIR BOINCDIR_OWNER="$(ls -ld $BOINCDIR | awk '{print $3}')" if [ "$BOINCUSR" != "$BOINCDIR_OWNER" ] ; then echo "User boinc can't access $BOINC_DIR" return 3 fi fi # now use procd to start boinc procd_open_instance $BOINCEXE_NAME procd_set_param command $BOINCEXE_NAME procd_append_param command $BOINCEXE_OPTS procd_set_param user $BOINCUSR procd_set_param limits core="unlimited" procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param pidfile $PID_FILE procd_close_instance }