Add updated rc.d scripts and rc.conf for FreeBSD install
This commit is contained in:
179
production/rc.d/bitcoin
Normal file
179
production/rc.d/bitcoin
Normal file
@@ -0,0 +1,179 @@
|
||||
#!/bin/sh
|
||||
# PROVIDE: bitcoin
|
||||
# REQUIRE: LOGIN cleanvar
|
||||
# KEYWORD: shutdown
|
||||
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf to enable :
|
||||
# bitcoin_enable (bool): Set to "NO" by default.
|
||||
# Set it to "YES" to enable bitcoin
|
||||
# bitcoin_user (str) Set to "bitcoin" by default.
|
||||
# bitcoin_group (str) Set to "bitcoin" by default.
|
||||
# bitcoin_conf (str) Set to "/bitcoin/bitcoin.conf" by default.
|
||||
# bitcoin_data_dir (str) Set to "/bitcoin" by default.
|
||||
# bitcoin_syslog_facility(str) Set to "local0" by default.
|
||||
# bitcoin_syslog_priority(str) Set to "info" by default.
|
||||
# bitcoinlimits_enable (bool) Set to "NO" by default.
|
||||
# Set it to "YES" to enable bitcoinlimits
|
||||
# bitcoinlimits_args Set to "-e -U ${bitcoin_user}" by default
|
||||
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="bitcoin"
|
||||
rcvar=bitcoin_enable
|
||||
|
||||
start_precmd="bitcoin_precmd"
|
||||
start_cmd="bitcoin_start"
|
||||
restart_precmd="bitcoin_checkconfig"
|
||||
reload_precmd="bitcoin_checkconfig"
|
||||
configtest_cmd="bitcoin_checkconfig"
|
||||
status_cmd="bitcoin_status"
|
||||
stop_cmd="bitcoin_stop"
|
||||
stop_postcmd="bitcoin_wait"
|
||||
command="/usr/local/bin/bitcoind"
|
||||
daemon_command="/usr/sbin/daemon"
|
||||
extra_commands="configtest"
|
||||
pidfile="/bitcoin/bitcoind.pid"
|
||||
|
||||
: ${bitcoin_enable:="NO"}
|
||||
: ${bitcoinlimits_enable:="NO"}
|
||||
|
||||
load_rc_config ${name}
|
||||
|
||||
: ${bitcoin_user:="bitcoin"}
|
||||
: ${bitcoin_group:="bitcoin"}
|
||||
: ${bitcoin_data_dir:="/bitcoin"}
|
||||
: ${bitcoin_config_file:="/bitcoin/bitcoin.conf"}
|
||||
: ${bitcoin_syslog_facility:="local0"}
|
||||
: ${bitcoin_syslog_priority:="info"}
|
||||
: ${bitcoin_syslog_tag:="bitcoin"}
|
||||
: ${bitcoin_kill_after:="300"}
|
||||
: ${bitcoinlimits_args:="-e -U ${bitcoin_user}"}
|
||||
|
||||
# set up dependant variables
|
||||
procname="${command}"
|
||||
required_files="${bitcoin_config_file}"
|
||||
pidfile="${bitcoin_data_dir}/bitcoind.pid"
|
||||
|
||||
bitcoin_checkconfig()
|
||||
{
|
||||
echo "Performing sanity check on bitcoin configuration:"
|
||||
if [ ! -d "${bitcoin_data_dir}" ]
|
||||
then
|
||||
echo "Missing data directory: ${bitcoin_data_dir}"
|
||||
exit 1
|
||||
fi
|
||||
chown -R "${bitcoin_user}:${bitcoin_group}" "${bitcoin_data_dir}"
|
||||
|
||||
if [ ! -f "${bitcoin_config_file}" ]
|
||||
then
|
||||
echo "Missing configuration file: ${bitcoin_config_file}"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "${command}" ]
|
||||
then
|
||||
echo "Missing executable: ${command}"
|
||||
exit 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
bitcoin_cleanup()
|
||||
{
|
||||
rm -f "${pidfile}"
|
||||
}
|
||||
|
||||
bitcoin_precmd()
|
||||
{
|
||||
bitcoin_checkconfig
|
||||
|
||||
pid=$(check_pidfile "${pidfile}" "${procname}")
|
||||
if [ -z "${pid}" ]
|
||||
then
|
||||
echo "Bitcoind is not running"
|
||||
rm -f "${pidfile}"
|
||||
fi
|
||||
|
||||
if checkyesno bitcoinlimits_enable
|
||||
then
|
||||
eval $(/usr/bin/limits ${bitcoinlimits_args}) 2>/dev/null
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
bitcoin_status()
|
||||
{
|
||||
local pid
|
||||
pid=$(check_pidfile "${pidfile}" "${procname}")
|
||||
if [ -z "${pid}" ]
|
||||
then
|
||||
echo "Bitcoind is not running"
|
||||
return 1
|
||||
else
|
||||
echo "Bitcoind running, pid: ${pid}"
|
||||
fi
|
||||
}
|
||||
|
||||
bitcoin_start()
|
||||
{
|
||||
echo "Starting bitcoin:"
|
||||
cd "${bitcoin_data_dir}" || return 1
|
||||
${daemon_command} \
|
||||
-u "${bitcoin_user}" \
|
||||
-l "${bitcoin_syslog_facility}" \
|
||||
-s "${bitcoin_syslog_priority}" \
|
||||
-T "${bitcoin_syslog_tag}" \
|
||||
${command} \
|
||||
-printtoconsole=1 \
|
||||
-conf="${bitcoin_config_file}" \
|
||||
-datadir="${bitcoin_data_dir}"
|
||||
}
|
||||
|
||||
bitcoin_stop()
|
||||
{
|
||||
echo "Stopping bitcoin:"
|
||||
pid=$(check_pidfile "${pidfile}" "${procname}")
|
||||
if [ -z "${pid}" ]
|
||||
then
|
||||
echo "Bitcoind is not running"
|
||||
return 1
|
||||
else
|
||||
kill ${pid}
|
||||
fi
|
||||
}
|
||||
|
||||
bitcoin_wait()
|
||||
{
|
||||
local n="${bitcoin_kill_after}"
|
||||
echo "Waiting for bitcoin shutdown:"
|
||||
while :
|
||||
do
|
||||
printf '.'
|
||||
pid=$(check_pidfile "${pidfile}" "${procname}")
|
||||
if [ -z "${pid}" ]
|
||||
then
|
||||
printf '\n'
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
n=$((${n} - 1))
|
||||
if [ ${n} -eq 0 -a -f "${pidfile}" ]
|
||||
then
|
||||
printf "\nForce shutdown"
|
||||
kill -9 $(cat "${pidfile}")
|
||||
for n in 1 2 3
|
||||
do
|
||||
printf '.'
|
||||
sleep 1
|
||||
done
|
||||
printf '\n'
|
||||
break
|
||||
fi
|
||||
done
|
||||
rm -f "${pidfile}"
|
||||
echo "Shutdown complete"
|
||||
}
|
||||
|
||||
run_rc_command "$1"
|
||||
Reference in New Issue
Block a user