Skip to content

Instantly share code, notes, and snippets.

@raugustinus
Created April 15, 2014 20:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raugustinus/10773139 to your computer and use it in GitHub Desktop.
Save raugustinus/10773139 to your computer and use it in GitHub Desktop.
freebsd artifactory rc.d script
#!/bin/sh
#
# artifactory startup script.
#
# $FreeBSD: artifactory 2014-04-15 raugustinus $
#
# Make sure you have the artifactory user and artifactory home or set them below accordingly!
# PROVIDE: artifactory
# REQUIRE: NETWORKING SERVERS
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable artifactory:
# artifactory_enable (bool): Set to "YES" to enable artifactory
# artifactory_args (str): Optional arguments to Artifactory
# artifactory_log_stdout (str) Artifactory log output stdout, filename.
# artifactory_log_stderr (str) Artifactory log output stderr, filename.
#
. /etc/rc.subr
name="artifactory"
rcvar=artifactory_enable
load_rc_config $name
artifactory_enable="${artifactory_enable:-"NO"}"
artifactory_log_stdout="${artifactory_log_stdout:-"${artifactory_logdir}/stdout.log"}"
artifactory_log_stderr="${artifactory_log_stderr:-"${artifactory_logdir}/stderr.log"}"
artifactory_args="${artifactory_args:-""}"
artifactory_sleep="${artifactory_sleep:-"5"}"
artifactory_kill9="${artifactory_kill9:-""}"
artifactory_additional_killall="${artifactory_additional_killall:-""}"
artifactory_user="artifactory"
artifactory_logdir=$ARTIFACTORY_HOME/logs
start_cmd="artifactory_start"
stop_cmd="artifactory_stop"
pidfile=$ARTIFACTORY_HOME/bin/artifactory.pid
ARTIFACTORY_HOME="/usr/local/artifactory"
artifactory_start ()
{
if [ ! -d "${artifactory_logdir}" ]
then
install -d -o ${artifactory_user} ${artifactory_logdir}
fi
echo "Starting artifactory."
daemon -u ${artifactory_user} ${ARTIFACTORY_HOME}/bin/artifactory.sh ${artifactory_args} >> ${artifactory_log_stdout} 2>> ${artifactory_log_stderr} >> ${artifactory_logdir}/boot.log 2>> ${artifactory_logdir}/boot.log
sleep ${artifactory_sleep} # let daemon(8) and sh(1) finish before executing pgrep(1)
pgrep -U ${artifactory_user} > ${pidfile}
chown ${artifactory_user} $pidfile
}
artifactory_stop ()
{
# Subvert the check_pid_file procname check.
if [ -f ${pidfile} ]
then
kill `cat ${pidfile}`
# Only if we aware that our setup can hangs, and only after trying simple kill, we can kill it hard way.
if [ ! -z "${artifactory_kill9}" ]
then
sleep ${artifactory_sleep}
kill -9 `cat ${pidfile}`
fi
# In some setups, Artifactory can spawn some child processess, which could prevent it from stopping, and freeing net ports.
# Let's blindly kill them all, since we are really know what we are doing.
if [ ! -z "${artifactory_additional_killall}" ]
then
sleep ${artifactory_sleep}
killall ${artifactory_additional_killall}
fi
fi
}
run_rc_command "$1"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment