pkgsrc/www/spawn-fcgi/files/spawnfcgi.sh

126 lines
2.6 KiB
Bash

#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD: spawnfcgi.sh,v 1.4 2011/07/25 11:36:29 imil Exp $
#
# PROVIDE: spawnfcgi
# REQUIRE: DAEMON
. /etc/rc.subr
name="spawnfcgi"
rcvar=$name
command="@PREFIX@/bin/spawn-fcgi"
start_cmd="spawnfcgi_start"
stop_cmd="spawnfcgi_stop"
status_cmd="spawnfcgi_status"
pidfile_base="@VARBASE@/run/spawnfcgi-"
spawnfcgi_pid()
{
pidfile=${pidfile_base}$1
job_command=$(eval echo \$${name}_${job}_command)
rc_pid=`check_pidfile "$pidfile" $job_command`
}
spawnfcgi_start()
{
rv=0
for job in "" $spawnfcgi_jobs; do
[ -z $job ] && continue
spawnfcgi_pid $job
if [ -n "${rc_pid}" ]; then
echo "${name}/$job already running (pid=${rc_pid})."
rv=1
continue
fi
job_command=$(eval echo \$${name}_${job}_command)
job_args=$(eval echo \$${name}_${job}_args)
job_user=$(eval echo \$${name}_${job}_user)
job_cwd=$(eval echo \$${name}_${job}_cwd)
job_port=$(eval echo \$${name}_${job}_port)
job_socket=$(eval echo \$${name}_${job}_socket)
job_socket_mode=$(eval echo \$${name}_${job}_socket_mode)
job_address=$(eval echo \$${name}_${job}_address)
job_children=$(eval echo \$${name}_${job}_children)
job_php_children=$(eval echo \$${name}_${job}_php_children)
if [ -n "${job_php_children}" ]; then
opt_C="-C"
else
opt_C=""
fi
if [ -n "${job_children}" ]; then
opt_F="-F"
else
opt_F=""
fi
if [ -n "${job_socket_mode}" ]; then
opt_M="-M"
fi
if [ -n "${job_socket}" ]; then
opt_s="-s"
else
opt_s=""
fi
if [ -n "${job_address}" ]; then
opt_a="-a"
else
opt_a=""
fi
if [ -n "${job_port}" ]; then
opt_p="-p"
else
opt_p=""
fi
echo "Starting ${name}/$job."
$command -f ${job_command} \
-u ${job_user} \
-d ${job_cwd:-/} \
$opt_C ${job_php_children} \
$opt_F ${job_children} \
$opt_s ${job_socket} \
$opt_M ${job_socket_mode} \
$opt_a ${job_address} \
$opt_p ${job_port} \
-P ${pidfile_base}${job} -- \
${job_command} ${job_args}
done
return $rv
}
spawnfcgi_stop()
{
rv=0
for job in "" $spawnfcgi_jobs; do
[ -z $job ] && continue
spawnfcgi_pid $job
if [ -n "${rc_pid}" ]; then
echo "Stopping ${name}/$job."
kill -TERM ${rc_pid}
wait_for_pids ${rc_pid}
else
echo "${name}/$job is not running."
rv=1
fi
done
return $rv
}
spawnfcgi_status()
{
rv=0
for job in "" $spawnfcgi_jobs; do
[ -z $job ] && continue
spawnfcgi_pid $job
if [ -n "${rc_pid}" ]; then
echo "${name}/${job} is running as pid ${rc_pid}."
else
echo "${name}/${job} is not running."
rv=1
fi
done
return $rv
}
load_rc_config $name
run_rc_command $1